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

浅谈HADOOP中压缩技术的选择

2018-03-03 12:44 190 查看
众所周知,没有任何一种压缩算法能达到一劳永逸的效果,如何选择压缩算法需要实际情况实际分析,归根到底其实就是时间与空间的选择。

压缩的好处 和 坏处
好处:
    1、节省空间
    2、减少IO(硬盘IO 和 网络传输IO)
    3、减少网络传输时间
    
坏处:
    1、由于使用数据时,需要先将数据解压,加重CPU负荷

常用的压缩技术:    

目前如果LZO使用索引技术,是能支持风格
压缩在Hadoop中的应用 - 是否支持分割
gzip、bzip2、LZO、Snappy区别主要在于是否支持分割。如果不支持分割,则意味中只能使用一个Task处理。

如何选择压缩算法
1、根据实际情况,选择使用Lossless(无损)还是Lossy(有损)的压缩技术。
2、判断热度选择压缩比。

以一个MR的JOB为例子作分析:
这里先将一个MR的JOB分大致为3个阶段:MAP、Shuffle&Sort、Reduce。每个阶段都会伴随网络传输、硬盘IO 和 解压(输入)压缩(输出)
已一个MR的job为例,InputSplit->Maps之间,如果读取的文件使用了不支持分割的压缩技术,意味着这里InputSplit 和 Maps 是多对一的关系,效率自然大大减低,如果数据量大甚至会出现OOM。
如果使用支持分割的技术,如果压缩比太大,意味着Maps阶段会花费大量的CPU资源去解压这些数据,很好可能造成JOB的阻塞。所以需要权衡时间和空间采用一种解压较快、压缩比较低可支持分割的压缩技术。
Shuffle&Sort阶段同Map
Reduce阶段,如果最后输出的数据不作为其它JOB的数据源,建议选择压缩比较高的技术。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: