您现在的位置是:首页 > 文章详情

Compression压缩

日期:2018-09-02点击:459

压缩所带来的好处,磁盘、IO,都来带来很多好处,同时也有很多的弊端。

查看自己的hadoop机器是否支持压缩命令     ./hadoop checknatice

如果压缩格式后面全是false,说明Hadoop是没有编译过的。

生产环境经常用的集中压缩  gzip  、 bzip2 、LZO、Snappy

先来看下他们之间的区别,主要体现在压缩比率、压缩与解压速度、是否支持分割等方面


Format            extention      压缩比到     是否支持分割

 Gzip                     .gz            40%          NO

 Bzip2                   .bz2           30%          yes

 LZO                     .lzo            50%          yes if indexed(前提是有索引)

 Snappy                    .snappy       50%            NO


而对于我们刚刚说的速度问题,压缩比越高,压缩速度就越慢,成反比,这里就不在列图了。

下面来看下为什么要看是否支持分割呢,我们知道不管是mapreduce还是spark都会有map和reduce还有shuffer的过程,

假如一个1G的文件使用Gzip压缩后,大概是400M左右,执行mapreduce任务时,只有会生成一个task,因为不支持分割。

假如一个1G的文件使用Bzip压缩后,大概是300M左右,执行mapreduce任务时,会按照128M生成3个task,因为支持分割,

就是说压缩后,所有不支持分片的,都只能由一个task去执行。

所以在选择压缩比、压缩时间、是否分割等方面,都要做到权衡。


下面来看下压缩在hadoop的中是用,通过配置就可以了


hadoop中压缩的配置使用

core-site.xml

<property>

    <name>io.compression.codecs</name>

<value>

org.apache.hadoop.io.compress.GzipCodec,

org.apache.hadoop.io.compress.DefaultCodec,

org.apache.hadoop.io.compress.BZip2Codec,

</value>

</property>




MapReduce中mapred-site.xml

<property>

<name>mapreduce.output.fileoutputformat.compress</name>

<value>true</value>

</property>


<property>

<name>mapreduce.output.fileoutputformat.compress.codec</name>

<value>org.apache.hadoop.io.compress.BZip2Codec</value>

</property>



原文链接:https://yq.aliyun.com/articles/633771
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章