从Hadoop 0.20.X开始,由于lzo压缩格式GPL形式授权的影响,lzo压缩从hadoop发布包中取消,转而成为Google Code中的一个项目hadoop-gpl-compression。本文介绍hadoop-gpl-compression的安装和编译。这里之所以叫安装和编译,而不是编译和安装,是因为安装并不一定需要编译,安装不成功才需要自己动手编译。
测试环境:
操作系统:Ubuntu 8.04
Java: SUN JDK 1.6.0_16,假设已设置完环境变量$JAVA_HOME
Hadoop: hadoop-0.20.1,假设已正确安装完毕,且安装目录是$HADOOP_HOME
安装目标:hadoop-gpl-compression-0.1.0-rc0
一.hadoop-gpl-compression安装步骤:
1.下载hadoop-gpl-compression-0.1.0-rc0.tar.gz
- wget http://hadoop-gpl-compression.googlecode.com/files/hadoop-gpl-compression-0.1.0-rc0.tar.gz
- tar -xvf hadoop-gpl-compression-0.1.0-rc0.tar.gz
- mv hadoop-gpl-compression-0.1.0/hadoop-gpl-compression-0.1.0.jar $HADOOP_HOME/lib/
- mv hadoop-gpl-compression-0.1.0/lib/native/Linux-i386-32/* hadoop-0.20.1/lib/native/Linux-i386-32/
- mv hadoop-gpl-compression-0.1.0/lib/native/Linux-amd64-64/* hadoop-0.20.1/lib/native/Linux-amd64-64/
- rm -r hadoop-gpl-compression-0.1.0 hadoop-gpl-compression-0.1.0-rc0.tar.gz
至此安装完成,enjoy your lzo compression!
但是往往安装不会那么一帆风顺,有可能机器不带有lzo解压缩的库,需要下载编译lzo的本地类库。
二.lzo类库安装步骤:
1.检查gcc、g++等编译工具已经安装,没有安装则执行以下命令安装:
- sudo apt-get install g++
- sudo apt-get install gcc
- wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
- tar -xvf lzo-2.03.tar.gz
- sudo ./configure
- sudo make
- sudo make install
至此,lzo类库编译安装完毕。
但是还会有少部分用户发现还是用不了,或者希望自己进行编译,那么下面继续:
三.hadoop-gpl-compression的编译和安装
0.假设hadoop-0.20.1已经安装完毕,假设安装目录是$HADOOP_HOME,假设lzo类库的安装已经完成(具体步骤见上一段);
1.安装必要的包,这一步列举的一些包没有经过完全验证,但是在没装这些包之前一直无法编译过去,在装了之后便以正确,但没有精确去考证是什么包起的作用,这里把所有包一并列出
- sudo apt-get install gcc
- sudo apt-get install g++
- sudo apt-get install gobjc
- sudo apt-get install autoconf
- sudo apt-get install automake
- sudo apt-get install libtool
- sudo apt-get install libcompress-lzo-perl
- sudo apt-get install lzop
- sudo apt-get install liblzo2-dev
- wget http://hadoop-gpl-compression.googlecode.com/files/hadoop-gpl-compression-0.1.0-rc0.tar.gz
- tar -xvf hadoop-gpl-compression-0.1.0-rc0.tar.gz
- wget http://www.apache.org/dist/ant/binaries/apache-ant-1.8.0RC1-bin.tar.gz
- tar -xvf apache-ant-1.8.0RC1-bin.tar.gz
- cp hadoop-0.20.1/*.jar hadoop-gpl-compression-0.1.0/lib/
若是32位系统,执行:
- export CFLAGS=-m32
- export CXXFLAGS=-m32
- export CFLAGS=-m64
- export CXXFLAGS=-m64
- sudo apache-ant-1.8.0RC1/bin/ant compile-native tar
- tar -xvf hadoop-gpl-compression-0.1.0/build/hadoop-gpl-compression-0.1.0-dev.tar.gz
- mv hadoop-gpl-compression-0.1.0-dev/hadoop-gpl-compression-0.1.0-dev.jar $HADOOP_HOME/lib/
- mv hadoop-gpl-compression-0.1.0-dev/lib/native/Linux-i386-32/* hadoop-0.20.1/lib/native/Linux-i386-32/
- mv hadoop-gpl-compression-0.1.0-dev/lib/native/Linux-amd64-64/* hadoop-0.20.1/lib/native/Linux-amd64-64/
- sudo rm -r hadoop-gpl-compression-0.1.0*
- rm -r apache-ant-1.8.0RC1
至此,hadoop-gpl-compression已经编译并安装完毕
四.其他事项
1.如果服务器访问外网需要代理如何设置
执行如下命令:
- export http_proxy=http://username:password@host:port
2.如果ant编译时需要代理则需要事先设置ANT_OPTS(这一条是网上查的,没有经过验证)
- export ANT_OPTS="-Dhttp.proxyHost=host -Dhttp.proxyPort=port -Dhttp.proxyUserName=username -Dhttp.proxyPassword=password"
3.如果用的是NTLM的代理,会比较麻烦,ant将会无法通过代理,这时候需要在一个能直接访问的局域网内存在一个maven库。
3.1修改hadoop-gpl-compression-0.1.0/build.xml
找到行:
- <property name="ivy_repo_url" value="http://repo2.maven.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar"/>
- <property name="ivy_repo_url" value="http://maven_repo/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar"/>
找到行:
- value="http://repo1.maven.org/maven2/"
- value="http://maven_repo/"