hadoop-2.4.1在linux下的编译
我使用的是CentOS release 6.4. 版本是1.7.0。
系统已经默认安装了openjdk 1.7.0_09, cmake version 2.8.12.1, OpenSSH_5.3.
1 安装Maven 3.0 或更高本版
tar xvzf protobuf-2.5.0.tar.gz
2 安装Findbugs 1.3.9
tar xvzf findbugs-1.3.9.tar.gz
Maven和Findbugs 都不需要安装,解压后就可以直接运行。这里需要设置环境变量,以便在编译hadoop的时候编译程序可以找到。
export M2_HOME=/home/username/hadoop/buildhadoop/tools/apache-maven-3.2.3
export FINDBUGS_HOME=/home/username/hadoop/buildhadoop/tools/findbugs-1.3.9
PATH=$PATH:$M2_HOME/bin:$FINDBUGS_HOME/bin:
3 安装Protocol Buffers
下载protobuf-2.5.0.tar.gz。
tar xvzf protobuf-2.5.0.tar.gz
cd protobuf-2.5.0
通过configure配置要安装的目录,可以不加prefix选项,系统将使用默认路径。
./configure --prefix=/home/username/hadoop/buildhadoop/tools/installdir/protoc
make
make check
make install
到这里,protoc已经编译成功了,并且c++需要的库文件也已经安装到/home/username/hadoop/buildhadoop/tools/installdir/protoc 目录下了。
下面需要安装java运行库到/home/username/hadoop/buildhadoop/tools/installdir/protoc 。
cd java
mvn test
mvn install
mvn package
由于我没有安装protoc到系统的默认路径,因此这里我需要设置环境。
export PROTOC_HOME=/home/username/hadoop/buildhadoop/tools/installdir/protoc
export PATH=$PATH:$PROTOC_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/yuxinliu/hadoop/buildhadoop/tools/protobuf-2.5.0/java/target:/home/yuxinliu/hadoop/buildhadoop/tools/installdir/protoc/lib
4 cmake 如果你的系统没有安装cmake,请安装。我的系统已经默认安装。
tar xvzf cmake-3.0.2.tar.gz
cd cmake-3.0.2
./bootstrap
make
make install
5 编译hadoop. 在编译之前,需要初始化环境变量。
tar xvzf hadoop-2.4.1-src.tar.gz
cd hadoop-2.4.1-src
mvn package -Pdist -DskipTests -Dtar
到此,你应该可以正确编译hadoop了。为了方便每次初始化环境变量,你可以使用下面的脚本来自动初始化。
.初始化脚本
#!/bin/sh
export M2_HOME=/home/yuxinliu/hadoop/buildhadoop/tools/apache-maven-3.2.3
export FINDBUGS_HOME=/home/yuxinliu/hadoop/buildhadoop/tools/findbugs-1.3.9
export PROTOC_HOME=/home/yuxinliu/hadoop/buildhadoop/tools/installdir/protoc
export PATH=$PATH:$M2_HOME/bin:$FINDBUGS_HOME/bin:$PROTOC_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/yuxinliu/hadoop/buildhadoop/tools/protobuf-2.5.0/java/target:/home/yuxinliu/hadoop/buildhadoop/tools/installdir/protoc/lib