【Hadoop】- Gzip , BZip2 , Lzo Snappy 四種方式的優缺點 和使用場景

  • Gzip

  • 優點
  1. 壓縮解壓速度快 , 壓縮率高 , hadoop本身支持
  2. 處理壓縮文件時方便 , 和處理文本一樣
  3. 大部分linux 系統自帶 Gzip 命令 , 使用方便
  • 缺點
  1. 不支持切片
  • 使用場景
  1. 文件壓縮後在130M以內 (一個塊大小) , 都可以使用 GZip 壓縮(因爲Gzip唯一的缺點是不能切片)
  2. 總結 : 不需要切片的情況下 可以使用

 

  • BZip2

  • 優點
  1. 壓縮率高(高於Gzip)
  2. 可以切片
  3. hadoop自帶 使用方便
  • 缺點
  1. 壓縮解壓速度超級慢
  • 使用場景
  1. 不要求壓縮速率 ,但是對壓縮率有要求的情況下 比如備份歷史記錄 , 備份文件
  2. 或者 輸出的文件較大 , 處理後的數據需要減少磁盤存儲並且以後使用數據的情況較少 (解壓 / 壓縮的情況較少)
  3. 對於單個文件 較大 ,又想壓縮減少磁盤空間 , 並且兼容之前的應用程序的情況
  4. 總結 : 對於壓縮解壓速度沒有要求的情況下

 

  • Lzo

  • 優點
  1. 壓縮解壓速度比較快 , 壓縮率也可以
  2. 支持切片 是hadoop 比較流行的壓縮格式
  3. 可以在linux 下安裝 lzo命令 使用方便
  • 缺點
  1. 壓縮率比Gzip低一些
  2. hadoop 本身不支持, 需要自己安裝
  3. 使用Lzo 格式的文件時需要做一些特殊處理(爲了支持 Split 需要建立索引 , 還需要家將 InputFormat 指定爲Lzo 格式 [特殊]
  • 使用場景
  1. 壓縮以後還大於 200M 的文件 , 且文件越大 Lzo 的優勢越明顯
  2. (原因很簡單 , 四種壓縮方式 只有BZip2 , Lzo支持切片 , 然後 BZip2 你懂的 , 速度賊慢 , 只能用於特定的場景, 所以 Lzo 是比較經常用的 )
  3. 總結 : 壓縮後文件還是比較大 需要切片的情況下 推薦使用

 

  • Snappy

  • 優點
  1. 高壓縮解壓速度 , 壓縮率還可以
  • 缺點
  1. 不能切片
  2. 壓縮率比Gzip小
  3. hadoop本身不支持 需要安裝
  • 使用場景
  1. 當Mapeduce的Map階段輸出的數據比較大的時候 , 作爲Map到Reduce的中間數據的壓縮格式
  2. 作爲一個MapReduce作業的輸出和另一個MapReduce的輸入
  3. 總結 : 因爲 壓縮率不怎麼樣 還不能切片 , 所以在一般的作爲輸入文件壓縮時可以用 GZip 和 Lzo 都比Snappy效率要高但是它的壓縮解壓速度比較快 所以比較適合用於 Map -> Reduce 作爲中間數據的壓縮格式

 

總結 :

壓縮速率 : Snappy > GZIp > Lzo >BZip2

支持切片 : BZIp2 LZo

壓縮率 : BZip2 > GZip > Lzo > Snappy

特殊 : Lzo Snappy hadoop 本身不支持 , 需要自行安裝 並且 Lzo 需要建立索引

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章