Compression压缩

压缩所带来的好处,磁盘、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>



上一篇:使用python 自动化监控进程


下一篇:SAS vs SSD对比测试MySQL tpch性能