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");


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章