大数据-常用压缩方式总结

原文链接: https://blog.csdn.net/zzhongcy/article/details/89375346

转载声明

本文系转载自以下两篇文章:

  • 压缩格式gzip/snappy/lzo/bzip2 比较与总结
    作者: zzhongcy

  • Snappy、Lzo、Gzip、Bzip2比较
    作者: 心有余力

转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。

摘要

本文对大数据常用的压缩方式GZip, BZip2, LZO, Snappy进行对比。

特性对比

GZip BZip2 LZO Snappy
HadoopCodec类 GzipCodec Bzip2Codec LzopCodec SnappyCodec
算法 Deflate GZip2 LZO Snappy
文件扩展名 .gz .bz2 .lzo .snappy
Hadoop内嵌
可切片
压缩比(测试值) 2 (13.4%) 1 (13.2%) 3 (20.5%) 4 (22.2%)
压缩速率 3 (21MB/S) 4 (2.4MB/S) 2 (135MB/S) 1 (172MB/S)
解压速率 3 (118MB/s) 4 (9.5MB/s) 1 (410MB/s) 2 (409MB/S)
特点 GZip压缩比高,大部分Linux系统自带Gzip命令,Hadoop原生就支持使用很方便;速度较慢,而且不支持切片。 BZip2压缩比最高,但速度实在太慢了 压缩比尚可,速度快,支持切片(需要建立索引,且文件修改后要重建索引,还需将 InputFormat 指定为Lzo)。支持hadoop native库,但不是Hadoop自带,需要自己安装。 压缩比最低,但速度最快,但不支持切片。支持hadoop native库,但不是Hadoop自带,需要自己安装。需要注意的是,实际生产环境中Snappy的表现通常比 LZO 好,应当进行测试对比再决定。
使用场景 如果压缩后大小和Block差不多大可以使用。也适合磁盘不富裕要求压缩比且对压缩时间无特别要求的场景,如异步离线压缩归档,比如HBase写入后的刷盘 适合很老的、极低频使用的历史文件(冷数据)归档 特点是支持切片 实时写入的Hive底层HDFS文件可用LZO方式压缩

压缩选择

  • 需要综合权衡压缩/解压缩数据所需资源如IO/网络贷款/CPU等,以及考虑数据使用场景
  • 如果数据已经压缩(例如 JPEG 格式的图像),则不建议进行压缩。事实上,结果文件实际上可能大于原文件。
  • MR程序需要支持可拆分,一般选LZO;而HBase不需要考虑拆分性。
  • MR程序可选压缩Map中间输出结果、程序整体输出结果等。

Hadoop本地库检测

hadoop checknative

你可能感兴趣的:(hadoop)