数据存储常见文件压缩格式对比分析

gzip,bzip2,lzo,snappy是比较常见的几种文件压缩格式,在一定程度上能够减少磁盘空间、磁盘IO以及网络IO的负担。本次总结将对四种压缩格式做以下对比。

支持的特性对比

压缩格式
codec类
算法
扩展名
多文件
splitable
native
工具
Gzip GzipCode deflate .gz gzip
Bzip2 Bzip2Code bzip2 .bz2 bzip2
Lzo LzopCodec lzo .lzo lzop
Snappy SnappyCode snappy .snappy


优缺点对比

压缩格式
优点
缺点
使用场景
Gzip 1.压缩解压速度快,压缩率高,hadoop本身支持
2.处理压缩文件时方便,和处理文本一样
3.大部分linux 系统自带 Gzip 命令,使用方便
不支持切片 1.文件压缩后在130M以内 (一个块大小),都可以使用 GZip 压缩(因为Gzip唯一的缺点是不能切片)
2.不需要切片的情况下可以使用
Bzip2 1.压缩率高(高于Gzip)
2.可以切片
3.hadoop自带使用方便
压缩解压速度超级慢 1.不要求压缩速率,但是对压缩率有要求的情况下比如备份历史记录 ,备份文件
2.输出的文件较大,况较少(解压/压缩的情况较少)
3.对于单个文件 较大,又想压缩减少磁盘空间,并且兼容之前的应用程序的情况
Lzo 1.压缩解压速度比较快 , 压缩率也可以
2.支持切片是hadoop 比较流行的压缩格式
3.可以在linux 下安装 lzo命令 使用方便
1.压缩率比Gzip低一些
2.hadoop 本身不支持,需要自己安装
3.使用Lzo 格式的文件时需要做一些特殊处理
1.压缩以后还大于 200M 的文件,且文件越大 Lzo 的优势越明显
2.四种压缩方式,只有BZip2,Gzip 支持切片,然后 BZip2 你懂的,速度贼慢,只能用于特定的场景,所以 Lzo 是比较经常用的
Snappy 高压缩解压速度 , 压缩率还可以 1.不能切片
2.压缩率比Gzip小
3.hadoop本身不支持 需要安装
1.当Mapeduce的Map阶段输出的数据比较大的时候,作为Map到Reduce的中间数据的压缩格式
2.作为一个MapReduce作业的输出和另一个MapReduce的输入


小结

通过对四种压缩格式的总结整理可以发现,在压缩速率上:Snappy>Gzip>Bzip2>Lzo,在压缩率上有:Bzip2>Gzip>Lzo>Snappy,在支持切片上只有Bzip2和Lzo是符合要求的。对于是否压缩数据以及使用哪种压缩格式对性能都具有一定的影响,一般具有以下几个原则:
(1)需要平衡压缩和解压缩数据所需的能力、读写数据所需的磁盘 IO,以及在网络中发送数据所需的网络带宽;
(2)如果数据已经压缩了,则不建议进行压缩;
(3)Gzip 压缩使用的 CPU 资源比 Snappy 或 Lzo更多,但可提供更高的压缩比。Gzip 通常是不常访问的冷数据的不错选择,而 Snappy 或 Lzo 则是更加适合经常访问的热数据。
(4)Bzip2 可以为某些文件类型生成比 Gzip 更多的压缩,但是压缩和解压缩时会在一定程度上影响速度。

评论
登录后可评论
发布者
icon
扬仔无敌
文章
31
问答
119
关注者
10
banner
关注星环科技
获取最新活动资讯

加入TDH社区版技术交流群

获取更多技术支持 ->

扫描二维码,立即加入