hadoop新增snappy解壓縮庫
Snappy是用C++開發的壓縮和解壓縮開發包,旨在提供高速壓縮速度和合理的壓縮率。
雖然生成的壓縮檔案可能會比其他壓縮庫的要大上20%至100%,但是,相比其他的壓縮庫,Snappy卻能夠在特定的壓縮率下擁有驚人的壓縮速度。
也就是說用空間換取速度
1、安裝snappy
yum install snappy snappy-devel
2、給hadoop環境增加 snappp.so檔案
ln -sf /usr/lib64/libsnappy.so $HADOOP_HOME/lib/native/.
3、新增配置
在core-site.xml檔案中加入snappy配置
<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
</value>
</property>
4、如果map的輸出啟用snappy壓縮
<property>
<name>mapreduce.map.output.compress</name>
<value>true</value>
</property>
<property>
<name>mapreduce.map.output.compress.codec</name>
<value>org.apache.hadoop.io.compress.SnappyCodec</value>
</property>
5、重新啟動hadoop,使得上面的配置生效。
如果你要在Mapreduce程式裡面使用Snappy相關類庫,可以用下面的方法實現
Configuration conf = new Configuration();
//對map輸出的內容進行壓縮
conf.set("mapred.compress.map.output","true");
conf.set("mapred.map.output.compression.codec","org.apache.hadoop.io.compress.SnappyCodec");
//對reduce輸出的內容進行壓縮
conf.set("mapred.output.compress","true");
conf.set("mapred.output.compression","org.apache.hadoop.io.compress.SnappyCodec");