hadoop添加snappy解压缩库

来源:互联网 发布:西游之路升阶数据 编辑:程序博客网 时间:2024/06/10 07:18

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


0 0