-
Gzip
- 優點
- 壓縮解壓速度快 , 壓縮率高 , hadoop本身支持
- 處理壓縮文件時方便 , 和處理文本一樣
- 大部分linux 系統自帶 Gzip 命令 , 使用方便
- 缺點
- 不支持切片
- 使用場景
- 文件壓縮後在130M以內 (一個塊大小) , 都可以使用 GZip 壓縮(因爲Gzip唯一的缺點是不能切片)
- 總結 : 不需要切片的情況下 可以使用
-
BZip2
- 優點
- 壓縮率高(高於Gzip)
- 可以切片
- hadoop自帶 使用方便
- 缺點
- 壓縮解壓速度超級慢
- 使用場景
- 不要求壓縮速率 ,但是對壓縮率有要求的情況下 比如備份歷史記錄 , 備份文件
- 或者 輸出的文件較大 , 處理後的數據需要減少磁盤存儲並且以後使用數據的情況較少 (解壓 / 壓縮的情況較少)
- 對於單個文件 較大 ,又想壓縮減少磁盤空間 , 並且兼容之前的應用程序的情況
- 總結 : 對於壓縮解壓速度沒有要求的情況下
-
Lzo
- 優點
- 壓縮解壓速度比較快 , 壓縮率也可以
- 支持切片 是hadoop 比較流行的壓縮格式
- 可以在linux 下安裝 lzo命令 使用方便
- 缺點
- 壓縮率比Gzip低一些
- hadoop 本身不支持, 需要自己安裝
- 使用Lzo 格式的文件時需要做一些特殊處理(爲了支持 Split 需要建立索引 , 還需要家將 InputFormat 指定爲Lzo 格式 [特殊]
- 使用場景
- 壓縮以後還大於 200M 的文件 , 且文件越大 Lzo 的優勢越明顯
- (原因很簡單 , 四種壓縮方式 只有BZip2 , Lzo支持切片 , 然後 BZip2 你懂的 , 速度賊慢 , 只能用於特定的場景, 所以 Lzo 是比較經常用的 )
- 總結 : 壓縮後文件還是比較大 需要切片的情況下 推薦使用
-
Snappy
- 優點
- 高壓縮解壓速度 , 壓縮率還可以
- 缺點
- 不能切片
- 壓縮率比Gzip小
- hadoop本身不支持 需要安裝
- 使用場景
- 當Mapeduce的Map階段輸出的數據比較大的時候 , 作爲Map到Reduce的中間數據的壓縮格式
- 作爲一個MapReduce作業的輸出和另一個MapReduce的輸入
- 總結 : 因爲 壓縮率不怎麼樣 還不能切片 , 所以在一般的作爲輸入文件壓縮時可以用 GZip 和 Lzo 都比Snappy效率要高但是它的壓縮解壓速度比較快 所以比較適合用於 Map -> Reduce 作爲中間數據的壓縮格式
總結 :
壓縮速率 : Snappy > GZIp > Lzo >BZip2
支持切片 : BZIp2 LZo
壓縮率 : BZip2 > GZip > Lzo > Snappy
特殊 : Lzo Snappy hadoop 本身不支持 , 需要自行安裝 並且 Lzo 需要建立索引