设为首页 加入收藏

TOP

Hadoop的压缩算法实例及压缩算法选取
2015-07-16 12:56:04 来源: 作者: 【 】 浏览:3
Tags:Hadoop 压缩 算法 实例 选取

1、DEFLATE是同时使用了LZ77与哈夫曼编码的一个无损数据压缩算法,源代码可以在zlib库中找到。gzip是以DEFLATE算法为基础扩展出来的一种算法。
2、压缩算法都是空间和时间的转换,更快压缩时间还是更小的压缩比。可以通过参数来指定,-1意味着速度,-9意味着空间。
拿gzip做个例子,下面就意味着更快速的压缩:gzip -1 file
3、gzip在时间和空间上的比较适中,bzip2压缩比gzip更有效,但是速度更慢。bzip2的解压速度比它的压缩速度要快。但是和其他压缩格式相比又是最慢的,但是压缩效果明显是最好的。snappy和LZ4的解压速度比LZO好很多。
4、splittable表示压缩格式是否可以被分割,也就是说是否支持随机读。压缩数据是否能被mapreduce使用,压缩数据是否能被分割就很关键了。
目前在Hadoop中用得比较多的有lzo,gzip,snappy,bzip2这4种压缩格式。下面是4种压缩格式的特征的比较


org.apache.hadoop.io.compress
CompressionCodec是压缩和解压缩的接口。以下是该接口的实现类。


CompressionCodec方法
CompressionCodec有两个方法用来压缩和解压
压缩:通过createOutputStream(OutputStream out)方法获得CompressionOutputStream对象
解压:通过createlnputStream(InputStream in)方法获得Compressionlnputstream对象


编写下面的例子进行比较
dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。


打成jar包:codec.jar
运行


1、用一些包含了压缩并且支持splittable的文件格式,比如SequenceFile,RCFile或者Avro文件。
2、使用提供splittable的压缩格式,比如,bzip2和索引后可以支持splittable的lzo。
3、提前把文件分成几个块,每个块单独压缩,这样就无需考虑splittable的问题了。
4、不要压缩文件,以不支持splittable的压缩格式存储一个很大的数据文件是不合适的,非本地处理效率会非常之低。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇SpringMVC详细示例实战教程 下一篇Hadoop常见重要命令行操作及命令..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: