1. 程式人生 > >MapReduce設定snappy壓縮方式

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>