测试环境centos 6.3 32位机器。
1,安装lzop native libraries
使用在线yum安装或者下载后rpm安装,我试验中发现sudo yum install lzop lzo2 发现不了想用的包 ,应该是没配置好yum源。
http://www.oberhumer.com/opensource/lzo/download/ 注意自己机器的位数,根据包的说明选择相应的包下载。
由于cento6.3是el6内核所以选择lzo-2.06-1.el6.rfx.i686.rpm,lzo-devel-2.06-1.el6.rfx.i686.rpm
2,下载lzo
有两种方法
方法一:参考http://www.24xuexi.com/w/2011-11-25/98336.html
本文使用第二种方法,简单些,首先从如下地址
https://github.com/kevinweil/hadoop-lzo下载hadoop-lzo-master,解压后
3, 编译
导入两个编译的变量32表示32位机器。
[user@fakeDistnode hadoop-lzo-master]$ export CFLAGS=-m32
[user@fakeDistnode hadoop-lzo-master]$ export CXXFLAGS=-m32
[user@fakeDistnode hadoop-lzo-master]$ ant compile-native tar
[user@fakeDistnode hadoop-lzo-master]$ cd build
[user@fakeDistnode build]$ ls
classes hadoop-lzo-0.4.15 hadoop-lzo-0.4.15.tar.gz native test
docs hadoop-lzo-0.4.15.jar ivy src
拷贝 build/hadoop-lzo-0.4.15.jar 到 $HADOOP_HOME/lib
4, 修改haoop的core-site.xml
<property>
<name>io.compression.codecs</name>
<value>org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.SnappyCodec,com.hadoop.compression.lzo.LzoCodec</value>
<description>A list of the compression codec classes that can be used
for compression/decompression.</description>
</property>
<property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
5 [user@fakeDistnode hadoop-lzo-master]$ cp build/native/Linux-i386-32/lib/libgplcompression.so $HADOOP_HOME/lib/native/Linux-i386-32/
本文使用的伪分布式,所以集群方式请
参考:
http://www.24xuexi.com/w/2011-11-14/98264.html
http://www.24xuexi.com/w/2011-11-25/98336.html
本文也参考了北风网视频教程
如果ant compile-native tar有问题,可如下尝试。
修改 build.xml搜索javah
加上<classpath refid="classpath"/>
<javah classpath="${build.classes}"
destdir="${build.native}/src/com/hadoop/compression/lzo"
force="yes"
verbose="yes">
<class name="com.hadoop.compression.lzo.LzoCompressor" />
<class name="com.hadoop.compression.lzo.LzoDecompressor" />
<classpath refid="classpath"/>
</javah>