安装Hadoop Snappy
在某台datanode上完成编译后分发到所有节点。
1. 安装snappy
$ wget https://snappy.googlecode.com/files/snappy-1.1.1.tar.gz
$ ./configure && make && make install
2. 安装maven
$ wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz
$ tar -zxf apache-maven-3.1.1-bin.tar.gz
$ cp -r apache-maven-3.1.1 /work/maven
$ diff /tmp/.bash_profile ~/.bash_profile
10c10,11
< PATH=$PATH:$HOME/bin
---
> MAVEN_HOME=/work/maven
> PATH=$PATH:$HOME/bin:$MAVEN_HOME/bin
$ source ~/.bash_profile
3. 编译hadoop-snappy
可以考虑跳过之前的步骤1,直接使用$HADOOP_HOME/lib/native/Linux-amd64-64/
目录下的libsnappy库文件,后边只用分发jar包就行
$ svn checkout http://hadoop-snappy.googlecode.com/svn/trunk/ hadoop-snappy-read-only
$ cd hadoop-snappy-read-only
$ ln -s /work/java/jre/lib/amd64/server/libjvm.so /usr/local/lib
$ mvn package
4. 安装到Hadoop集群
hadoop-snappy
编译生成的target/hadoop-snappy-0.0.1-SNAPSHOT.tar.gz
包已经含有libsnappy
本地库文件,所以各个节点不需要安装snappy
,分发即可。
$ cd target
$ tar -zxf hadoop-snappy-0.0.1-SNAPSHOT.tar.gz
$ for x in $(cat $HADOOP_HOME/conf/slaves);do scp -r hadoop-snappy-0.0.1-SNAPSHOT/lib/* $x:$HADOOP_HOME/lib/;done
修改core-site.xml
加入以下配置并重启Hadoop。
<property>
<name>io.compression.codecs</name>
<value>
org.apache.hadoop.io.compress.SnappyCodec
</value>
</property>
5. 其他
Hadoop从1.0.2及0.23.0版本开始,已经默认包含了hadoop-snappy的支持,这些版本如果需要使用snappy,只需要将第1步生成的libsnappy库文件(/usr/local/lib/libsnappy*
)放置到所有节点的Hadoop本地库目录($HADOOP_HOME/lib/native/Linux-amd64-64/
)中即可。Hadoop默认配置文件中已经包含第4步中的配置,不需要进行重启即可直接使用。