大数据-常用压缩方式总结
转载声明本文系转载自以下两篇文章:压缩格式gzip/snappy/lzo/bzip2 比较与总结作者: zzhongcySnappy、Lzo、Gzip、Bzip2比较作者: 心有余力转载仅为方便学习查看,一切权利属于原作者,本人只是做了整理和排版,如果带来不便请联系我删除。摘要本文对大数据常用的压缩方式GZip, BZip2, LZO, Snappy进行对比。特性对比...
·
转载声明
本文系转载自以下两篇文章:
-
压缩格式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
更多好文
- Lzo压缩详细
安装、配置、LzoCodec和LzopCodec - java中常用的压缩与解压代码和测试
- Java压缩算法性能比较和代码测试
- Java压缩算法性能比较和代码测试-知乎补档
更多推荐
所有评论(0)