Gzip,BZip2,Lzo,Snappy总结

gzip,bzip2,lzo,snappy是hadoop中比较常见的文件压缩格式,可以节省很多硬盘存储,以下是Gzip , BZip2 , Lzo Snappy 四种方式的优缺点 和使用场景

Gzip

优点:

  1.压缩解压速度快 , 压缩率高 , hadoop本身支持

  2.处理压缩文件时方便 , 和处理文本一样

  3.大部分linux 系统自带 Gzip 命令 , 使用方便

缺点:

  不支持切片

使用场景:

  1.文件压缩后在130M以内 (一个块大小) , 都可以使用 GZip 压缩(因为Gzip唯一的缺点是不能切片)

  2.总结 : 不需要切片的情况下 可以使用


Bzip2

优点:

  1.压缩率高(高于Gzip)

  2.可以切片

  3.hadoop自带 使用方便

缺点:

  压缩解压速度超级慢

使用场景:

  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 , Gzip 支持切片 , 然后 BZip2 你懂的 , 速度贼慢 , 只能用于特定的场景, 所以 Lzo 是比较经常用的 )

  3.总结 : 压缩后文件还是比较大 需要切片的情况下 推荐使用


Snappy

优点:

  高压缩解压速度 , 压缩率还可以

缺点:

  1.不能切片

  2.压缩率比Gzip小

  3.hadoop本身不支持 需要安装

使用场景:

  1.当Mapeduce的Map阶段输出的数据比较大的时候 , 作为Map到Reduce的中间数据的压缩格式

  2.作为一个MapReduce作业的输出和另一个MapReduce的输入

  3.总结 : 因为 压缩率不怎么样 还不能切片 , 所以在一般的作为输入文件压缩时可以用 GZip 和 Lzo 都比Snappy snappy压缩率要高于lzo


总结 :

压缩速率 : Snappy > GZIp > Lzo >BZip2

支持切片 : BZIp2 LZo

压缩率 : BZip2 > GZip > Lzo > Snappy

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

不同意见和补充
压缩率:snappy压缩率要高于lzo,博主公司也在同时使用lzo与snappy压缩格式。博主公司每日的数据为1.5T,在经过lzo压缩后可以维持在600g——700g之间;然而snappy格式压缩完后只有300g——400g,几乎为lzo的两倍。


————————————————
版权声明:本文为CSDN博主「bm8836900」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bm8836900/article/details/87913861

猜你喜欢

转载自www.cnblogs.com/sx66/p/11953602.html