您的位置:首页 > 运维架构

hadoop 压缩工具 比较

2016-05-25 10:12 218 查看
大数据,算法qq交流群:397173819

hadoop里支持许多压缩算法。压缩的好处主要有两点:1.减少了文件占用的存储空间,原来上T的文件可能压缩完以后只需要两三百G的空间即可;2.文件的体积小了以后,数据传输的速度自然就快了。在现在的大数据环境下,这两点显得更加重要。所以现在hdfs文件系统上存的文件,如果数据量大到一定程度,都需要经过压缩处理。

hadoop上常用的压缩格式包括gzip,lzo,snappy,bzip2。以下我们对这四种压缩算法做个对比。

1.gzip

优点:压缩比高,压缩解压的速度也比较快。hadoop本身就支持,自带相关处理gzip文件的jar包。换句话说,你可以像处理普通的文本文件一样处理gzip压缩文件。

缺点:不支持split。这个就很要命了,不支持split,那就意味着无论多大的gzip文件,hadoop在处理的时候都只分配一个mapper给这个文件。这显然是不行的。

应用场景:当每个文件压缩之后都在128M以内时,都可以考虑gzip。(因为hadoop默认的是给128M分配一个mapper)不过这条件,实在是太蛋疼。。。所以本博主工作这么些年,从来没有在hdfs上见过gzip的压缩文件。。。

2.lzo

优点:合理的压缩比,压缩解压速度也比较快。最最最重要的是,支持split,所以本博主工作这么些年,hdfs上的文件,一般都采用lzo压缩。

缺点:压缩比相对gzip第一点。但是相比能split这一点,基本可以忽略。hadoop本身没有自带lzo,需要再安装lzo相关的库。在实际使用时,需要对lzo文件建索引,否则hadoop也是会把lzo文件看成一个文件滴。另外在写mr相关代码时,需要
setInputFormatClass(LzoTextInputFormat.class);


应用场景:hadoop上最流行的压缩格式。本博主实战中接触到的压缩格式都是用的他。

3.snappy压缩

优点:合理的压缩比,高速压缩速度,支持hadoop native库

缺点:不支持split,压缩比低于gzip。也需要安装

应用场景:好吧,本博主没用过这种。暂时不太清楚。

4.bzip2压缩

优点:支持split,很高的压缩比,比gzip还高。hadoop本身也支持

缺点:压缩/解压速度慢。这个就比较吃亏了,因为压缩是很耗cpu的操作,如果用他的话集群资源就全被他占了,所以一般实际中用lzo而不用他。

应用场景:肯定就是对压缩比要求很高,但对速度要求不是那么苛刻的场合了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: