一、優缺點
優點: 1,減少存儲磁盤空間,降低單節點的磁盤IO。
2,由於壓縮后的數據占用的帶寬更少,因此可以加快數據在Hadoop集群流動的速度。例如在不同節點創建3個replica的階段,或是shuffle階段。
缺點: 需要花費額外的時間/CPU做壓縮和解壓縮計算
二、幾種常見的壓縮對比

三、壓縮分析
首先說明mapreduce哪些過程可以設置壓縮:需要分析處理的數據在進入map前可以壓縮,然后解壓處理,map處理完成后的輸出可以壓縮,這樣可以減少網絡I/O(reduce通常和map不在同一節點上),reduce拷貝壓縮的數據后進行解壓,處理完成后可以壓縮存儲在hdfs上,以減少磁盤占用量。

3.1設置啟用壓縮:
有兩種方式可以設置數據壓縮:
方法一:在.sql腳本設置如下參數
set hive.exec.compress.intermediate=true --啟用中間數據壓縮 SET hive.exec.compress.output=true; -- 啟用最終數據輸出壓縮 set mapreduce.output.fileoutputformat.compress=true; --啟用reduce輸出壓縮 set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec --設置reduce輸出壓縮格式 set mapreduce.map.output.compress=true; --啟用map輸入壓縮 set mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec;-- 設置map輸出壓縮格式
方法二:通過設置hive-site.xml文件設置啟用中間數據壓縮,配置文件如下:
<property>
<name>hive.exec.compress.intermediate</name>
<value>true</value>
</property>
<property>
<name>hive.exec.compress.output</name>
<value>true</value>
</property>
<!-- 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>
<!-- reduce輸出壓縮 -->
<property>
<name>mapreduce.output.fileoutputformat.compress</name>
<value>true</value>
</property>
<property>
<name>mapreduce.output.fileoutputformat.compress.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>

