本文主要是介绍hadoop平台gz、lzo压缩对比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
压缩比:
rcfile: 1.04
rcfile+snappy: 0.27
rcfile+lzo: 0.25
sequencefile: 0.83
sequencefile+snappy:0.84
sequencefile+lzo: 0.79
单列读取速度:
select count(distinct product_no)
rcfile: 22秒
rcfile+snappy: 16秒
rcfile+lzo: 17秒
sequencefile: 26秒
sequencefile+snappy:25秒
sequencefile+lzo: 22秒
多列读取速度:
select * where 1=1 limit 10
rcfile: 11秒
rcfile+snappy: 9秒
rcfile+lzo: 9秒
sequencefile: 9秒
sequencefile+snappy:9秒
sequencefile+lzo: 9秒
可以看到使用rcfile+lzo压缩比最高
使用rcfile+snappy单列读取最快
使用rcfile不压缩,多列读取最慢
1、hadoop可以直接读取gz、lzo等压缩格式的数据
2、hadoop按照数据流的方式一边解压缩一边读取数据处理
3、目前HDFS上的存储格式有两种,可并行读取格式,不可并行读取格式
可并行读取格式: rcfile,sequenceFile,textFile(不压缩,或bZip2,lzop压缩)
不可并行读取格式: textFile(lzo压缩, GZ压缩, snappy压缩)
对于不可并行读取的格式, 无论文件分为多少个block存储,都只能用一个map处理,性能较差
4、如果hadoop文件存储格式为sequenceFile或是rcfile,则通过gz、lzo等方式压缩时会是内部压缩,此时处理压缩数据时不会按照块分配map而是会分配多个map并向处理,因此效率比txtfile格式文件压缩后效率要高很多。sequenceFile和rcfile格式的文件压缩后从文件扩展名无法看出是压缩文件,即文件扩展名不会出现.gz或是.lzo
5、如果采用lzop(基于lzo压缩+索引的压缩算法)压缩的话数据可以实现多个map同时读取一个文件的数据
这篇关于hadoop平台gz、lzo压缩对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!