MapReduce設定snappy壓縮方式
一:MapReduce的壓縮
hadoop壓縮能夠減少map階段從環形緩衝區生成小檔案進行壓縮,以及reductTask讀取map階段的檔案採用壓縮,可以有效的節約磁碟空間以及加速資料在網路上的傳輸。
檢視當前安裝的hadoop支援的壓縮方式:
bin/hadoop checknative
二:設定snappy壓縮方式
注意:預設下載的CHD版本的hadoop不支援snappy壓縮,需要對hadoop進行本地編譯,才能支援snappy壓縮。
程式碼方式採用壓縮:
1)在Map階段設定壓縮:
Configuration configuration = new Configuration();
configuration.set("mapreduce.map.output.compress","true");
configuration.set("mapreduce.map.output.compress.codec","org.apache.hadoop.io.compress.SnappyCodec");
2)在reduce階段設定壓縮:
configuration.set("mapreduce.output.fileoutputformat.compress","true");
configuration.set("mapreduce.output.fileoutputformat.compress.type","RECORD");
configuration.set("mapreduce.output.fileoutputformat.compress.codec","org.apache.hadoop.io.compress.SnappyCodec");
配置檔案方式採用snappy壓縮:
1)修改mapred-site.xml配置
<!--Map階段壓縮配置-->
<property>
<name>mapreduce.map.output.compress</name>
<value>true</value>
</property>
<property>
<name>mapreduce.map.output.compress.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
<!--Reduct階段壓縮配置-->
<property> <name>mapreduce.output.fileoutputformat.compress</name>
<value>true</value>
</property>
<property> <name>mapreduce.output.fileoutputformat.compress.type</name>
<value>RECORD</value>
</property>
<property> <name>mapreduce.output.fileoutputformat.compress.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>