2019-12-13 Hadoop中压缩方式对比

原文:https://www.jianshu.com/p/c8c97a9462ff

1、压缩Compression   

        压缩有两大好处:可以减少文件存储所需要的磁盘空间,其次是可以加快数据在网络和磁盘上的传输

        压缩的缺点:CUP消耗大

        Hadoop中常见的压缩方式有:GZIP、BZIP2、LZO(LZF/LZ4)、Snappy

        工作中如何选择压缩方式需要考虑的因素有2个:压缩比(压缩前后百分比)、压缩/解压的速度

压缩比

                    bzip2:30%    snappy、lz4、lzo 50%   Gzip处于两者中间

压缩/解压时间

压缩比与解压时间成反比,工作中如果需要更加节省空间,则选择压缩比高的;如果要求执行速度快的,则选择压缩速度快的

ex:历史数据(老数据),则选择压缩比大的

2、压缩在Hadoop中的应用

    1.Hadoop jobs 通常是IO密集的,压缩数据可以提升IO操作

    2.压缩可以降低数据的大小,加速网络传输

    3.一个job的性能会有很大的提升有可能仅仅通过一个简单的压缩

    4.必须考虑是否可分割(splittability)

可压缩

    bzip2 :可分割    LZO:通常不能分割,但可以创建一个索引之后,就可以分割

     ex:1G数据,如果没有压缩, 会有8个Map Task

            1G gzip的压缩数据:只有1个Map Task

            1G bzip2 压缩数据:会有8个Map Task 并行传输

Hadoop中常用Codec压缩,我们只需要配置在hadoop的配置文件中即可

core-site.xml                 -------------------->Map Input

        compression.codes

       

            org.apache.hadoop.io.compress.GzipCodec,        //Gzip                         org.apache.hadoop.io.compress.DefaultCodec,    // Zlib                                               org.apache.hadoop.io.compress.BZip2Codec, //常用                              com.hadoop.compression.lzo.LzopCodec,       //常用                            org.apache.hadoop.io.compress.Lz4Codec,                                                     org.apache.hadoop.io.compress.Snappycodec,

        

mapred-site.xml                 

        mapreduce.output.fileoutputformat.compress

        true

        mapreduce.map.output.compress

        true

        mapreduce.map.output.compress .codec

        org.apache.hadoop.io.compress.LZOCodec

        mapreduce.output.fileoutputformat.compress.codec

        org.apache.hadoop.io.compress.BZip2Codec  //bzip2压缩

3、压缩在MapReduce中的应用

压缩在MapReduce中应用

一、Map Input

        1.MapReduce左右会从HDFS读数据

        2.如果压缩了比较大的输入数据,则减少了磁盘读的成本

        3.使用可分割的压缩方式 (比如Bzip2)

        4.使用分割方式压缩,还需要配合Sequence Files、RC Files,不仅要压缩还有结合存储格式

        总结:尽可能的使用分割

二、Compress Intermediate Data

        1.map的输出需要通过网络传输写到磁盘

        2.通常情况下使用压缩来减少磁盘读写和网络的传输

        3.压缩中间数据会带来优化即使输入输出都不使用压缩

        4.建议使用最快的压缩方式

三、Compress Reduce output

        1.MapReduce的输出经常被用作为归档或者下一个作业的输入

        2.使用压缩来降低归档所耗的磁盘空间

        3.使用高压缩比的压缩方式来节约更多的磁盘空间

        4.如果这个输出作为下一个作业的输入,则应该优先选择可分割的压缩方式

作者:糊涂蟲

链接:https://www.jianshu.com/p/c8c97a9462ff

来源:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(2019-12-13 Hadoop中压缩方式对比)