压缩比一般是越小越好,但是压得越小,解压时间越长。
所以bzip2的压缩文件最小,但是解压慢,snappy的压缩速率最快,解压速度和lzo差不多,但是snappy不支持分片,lzo支持分片
工作中lzo最流行,snappy用的也多
Hadoop
可以在输入端,中间数据和输出数据段进行压缩
例如:添加配置core-site.xml
并同步core-site.xml到其他机器
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<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,
org.apache.hadoop.io.compress.SnappyCodec,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec
</value>
</property>
<property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
</configuration>
例如:添加配置mapred-site.xml
并同步mapred-site.xml到其他机器
下面例子使mapreduce输出端到hdfs为bzip2格式
<configuration>
<property>
<name>mapreduce.output.fileoutputformat.compress</name>
<value>false</value>
</property>
<property>
<name>mapreduce.output.fileoutputformat.compress.codec</name>
<value>org.apache.hadoop.io.compress.BZip2Codec</value>
</property>
</configuration>
hive
设置hive输出压缩格式为bzip2
set hive.exec.compress.output=true;
set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.BZip2Codec;