摘要: hadoop中4种压缩格式的特征的比较java
1 gzip压缩linux
优势:压缩率比较高,并且压缩/解压速度也比较快;hadoop自己支持,在应用中处理gzip格式的文件就和直接处理文本同样;有hadoop native库;大部分linux系统都自带gzip命令,使用方便。并发
缺点:不支持split。app
应用场景:当每一个文件压缩以后在130M之内的(1个块大小内),均可以考虑用gzip压缩格式。譬如说一天或者一个小时的日志压缩成一个gzip 文件,运行mapreduce程序的时候经过多个gzip文件达到并发。hive程序,streaming程序,和java写的mapreduce程序完 全和文本处理同样,压缩以后原来的程序不须要作任何修改。oop
2 lzo压缩ui
优势:压缩/解压速度也比较快,合理的压缩率;支持split,是hadoop中最流行的压缩格式;支持hadoop native库;能够在linux系统下安装lzop命令,使用方便。spa
缺点:压缩率比gzip要低一些;hadoop自己不支持,须要安装;在应用中对lzo格式的文件须要作一些特殊处理(为了支持split须要建索引,还须要指定inputformat为lzo格式)。.net
应用场景:一个很大的文本文件,压缩以后还大于200M以上的能够考虑,并且单个文件越大,lzo优势越越明显。日志
3 snappy压缩orm
优势:高速压缩速度和合理的压缩率;支持hadoop native库。
缺点:不支持split;压缩率比gzip要低;hadoop自己不支持,须要安装;linux系统下没有对应的命令。
应用场景:当mapreduce做业的map输出的数据比较大的时候,做为map到reduce的中间数据的压缩格式;或者做为一个mapreduce做业的输出和另一个mapreduce做业的输入。
4 bzip2压缩
优势:支持split;具备很高的压缩率,比gzip压缩率都高;hadoop自己支持,但不支持native;在linux系统下自带bzip2命令,使用方便。
缺点:压缩/解压速度慢;不支持native。
应用场景:适合对速度要求不高,但须要较高的压缩率的时候,能够做为mapreduce做业的输出格式;或者输出以后的数据比较大,处理以后的数据 须要压缩存档减小磁盘空间而且之后数据用得比较少的状况;或者对单个很大的文本文件想压缩减小存储空间,同时又须要支持split,并且兼容以前的应用程 序(即应用程序不须要修改)的状况。
最后用一个表格比较上述4种压缩格式的特征(优缺点):
4种压缩格式的特征的比较
压缩格式 | split | native | 压缩率 | 速度 | 是否hadoop自带 | linux命令 | 换成压缩格式后,原来的应用程序是否要修改 |
---|---|---|---|---|---|---|---|
gzip | 否 | 是 | 很高 | 比较快 | 是,直接使用 | 有 | 和文本处理同样,不须要修改 |
lzo | 是 | 是 | 比较高 | 很快 | 否,须要安装 | 有 | 须要建索引,还须要指定输入格式 |
snappy | 否 | 是 | 比较高 | 很快 | 否,须要安装 | 没有 | 和文本处理同样,不须要修改 |
bzip2 | 是 | 否 | 最高 | 慢 | 是,直接使用 | 有 | 和文本处理同样,不须要修改
|
http://blog.csdn.net/lifuxiangcaohui/article/details/52623660