一、優缺點
優點: 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>