1 安装linux的lzo库
需要在集群的每一个节点都安装lzo库,假定都64位的机器。
1)安装lzo 操作如下: wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz
2)解压
tar -zxvf lzo-2.10.tar.gz
3.进入解压后的目录:
cd lzo-2.10
4.编译参数配置:
本例lzo安装在/usr/local/lzo-2.10目录下。
mkdir /usr/local/lzo2.10
./configure --enable-shared --prefix=/usr/local/lzo2.10
5.编译并安装:
make && make install
6.进入lzo的安装目录:
cd /usr/local/lzo2.10
7.将lib目录下的库文件分别拷贝至/usr/lib64目录以及$HADOOP_HOME/lib/native/Linux-amd64-64/下:
cp -r lib/* /usr/lib64/
cp -r lib/* $HADOOP_HOME/lib/native/Linux-amd64-64/
注:(1).如果你的机器是32位系统则将库文件分别拷贝到/usr/lib和$HADOOP_HOME/lib/native/Linux-i386-32目录下。
可以通过uname -a查看当前系统位数
(2).lib目录下的库文件将来在使用过程中会被Hadoop(就是Java程序)通过JNI调用(确切的说liblzo*库文件会被后面的libgplcompression*库文件调用,libgplcompression*库文件被才被Java程序直接调用)。
lzop是一个linux下的lzo压缩命令行工具,方便大家在linux下压缩lzo文件,不是必需的。
2 安装hadoop-lzo包
可以下载kevinweil的hadoop-lzo项目,下载地址:https://github.com/kevinweil/hadoop-lzo
也可以下载twitter的hadoop-lzo项目,下载地址:https://github.com/twitter/hadoop-lzo/
twitter的一直在更新和维护,建议下载twitter的
wget https://github.com/twitter/hadoop-lzo/archive/master.zip --no-check-certificate -O master.zip
下载之后解压
upzip master.zip
解压之后是一个目录hadoop-lzo-master
可以修改目录hadoop-lzo-master里的pom.xml,把hadoop.current.version的属性从hadoop2.1.0-beta改为Hadoop 2.2.0(这个不修改也没有问题,不过还是建议改一下)
64位环境的需要设置两个环境变量:
export CFLAGS=-m64
export CXXFLAGS=-m64
然后就可以用maven编译了
cd hadoop-lzo-master
mvn clean package -Dmaven.test.skip=true
如果没有安装maven,那么就需要多执行maven安装动作
(下载maven安装包
wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.tar.gz
3、解压缩maven
tar -zxvf apache-maven-3.6.0-bin.tar.gz
我这里将maven解压缩之后的路径为:/var/local
4、配置maven环境变量
vi /etc/profile
添加环境变量
export MAVEN_HOME=/usr/local/apache-maven-3.6.0
export PATH=$PATH:$MAVEN_HOME/bin
编辑之后记得使用source /etc/profile命令是改动生效。)
注意:如果前面的linux lzo库没有安装在标准目录下,在用maven编译前需要设置C_INCLUDE_PATH和LIBRARY_PATH这两个环境变量,指出lzo的头文件和库文件在哪个目录,如:
export C_INCLUDE_PATH=/usr/local/lzo-2.06/include
export LIBRARY_PATH=/usr/local/lzo-2.06/lib
编译好之后把编译出来的本地库和jar包hadoop-lzo-0.4.18-SNAPSHOT.jar拷贝到相应的目录,并拷贝到集群的每一个节点上的相应的目录。
cp target/native/Linux-amd64-64/* $HADOOP_HOME/lib/native/
cp target/hadoop-lzo-0.4.18-SNAPSHOT.jar $HADOOP_HOME/share/hadoop/mapreduce/lib/
3 修改hadoop的配置文件core-site.xml
修改/增加以下2个参数:
<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,
com.hadoop.compression.lzo.LzoCodec,
com.hadoop.compression.lzo.LzopCodec
</value>
</property>
<property>
<name>io.compression.codec.lzo.class</name>
<value>com.hadoop.compression.lzo.LzoCodec</value>
</property>
4 hadoop客户机lzo的安装和配置
和hadoop服务器的机器上的安装和配置一样。
5 测试
可以运行以下hdfs命令看是否成功
$HADOOP_HOME/bin/hdfs dfs -text /path/to/file.lzo
运行一个以lzo文件为输入的作业是否运行成功
6 实战tips
在hadoop2.0中,把maven编译好的jar包hadoop-lzo-0.4.18-SNAPSHOT.jar拷贝到 $HADOOP_HOME/share/hadoop/mapreduce/lib/或者$HADOOP_HOME/share/hadoop/mapreduce/目录下,不需要重启hadoop集群。