snappy是google的一个开源的压缩库,在合理的压缩率的前提下提供了提供了一个很高的压缩/解压的速度,利用单颗Intel Corei7处理器内核处理达到每秒处理250MB~500MB的数据流。snappy压缩在hadoop中不是自带的,本文介绍在hadoop2.0中安装和配置snappy压缩,使hadoop2.0支持snappy压缩。
1 安装snappy库
可以从https://code.google.com/p/snappy/下载源码,通过编译源码安装
tar -zxvf snappy-1.1.1.tar.gz cd snappy-1.1.1 ./configure make sudo make install
也可以直接用yum来安装
sudo yum install snappy snappy-devel
2 安装hadoop-snappy包
从https://github.com/electrum/hadoop-snappy下载hadoop-snappy包hadoop-snappy-master.zip
解压
unzip hadoop-snappy-master.zip
解压后是一个hadoop-snappy-master文件夹
编译
cd hadoop-snappy-master/ mvn package -Dsnappy.prefix=/usr/local
注意-Dsnappy.prefix是设置你的snappy安装的目录,默认是/usr/local
编译后把本地库文件和jar包(编译后可能已经打在一个压缩包里,需要先解压)拷贝到相应的目录
tar -zxvf hadoop-snappy-0.0.1-SNAPSHOT.tar.gz cp-r hadoop-snappy-0.0.1-SNAPSHOT/lib/* $HADOOP_HOME/lib
Snappy 0.0.1-SNAPSHOT/目录包含本地库和hadoop-snappy-0.0.1-SNAPSHOT.jar包,都需要拷贝到相应的目录。
注:按照文档的说法,编译好的tar包里已经带有snappy的native库,因此第一步“1 安装snappy库”可以省略。
3 修改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, org.apache.hadoop.io.compress.SnappyCodec </value> </property>
4 重启hadoop集群
这样,我们hadoop服务器上的hadoop snappy就安装成功了。
5 实战tips
在hadoop2.0中,把hadoop-snappy-0.0.1-SNAPSHOT.jar包拷贝到$HADOOP_HOME/share/hadoop/mapreduce/lib/或者$HADOOP_HOME/share/hadoop/mapreduce/目录下,不需要重启hadoop集群。
hadoop服务器的每台机器都需要安装和配置。
hadoop客户机snappy的安装和配置的方法与hadoop服务器一样。
参考资料
https://code.google.com/p/snappy/
https://github.com/electrum/hadoop-snappy
https://code.google.com/p/hadoop-snappy/
http://code.google.com/p/hadoop-gpl-compression