hadoop原始碼編譯方法,以及編譯問題總結
一、編譯所需的一些軟體
1.jdk1.7
2.maven 3.3.9
3.findbugs 3.0.1
4.protocolBuffer 2.5.0
5.cmake 2.6
6.zlib-devel
7.openssl-devel
8.gcc-c++
9.autoconf
10.automake
11.hadoop-2.7.3-src.tar.gz
二、編譯hadoop原始碼步驟
首先需要在虛擬機器上安裝以下軟體
**1.安裝jdk並配置環境變數**
下載JDK安裝包
版本為1.7.0_79,將其放入/usr/lib/jvm/ 目錄下(建立jvm資料夾 mkdir jvm),
Ldd-1
[[email protected]ldd-1 ~]# cd /usr/lib/jvm/
[[email protected]ldd-1 jvm]# ls
jdk-7u79-linux-x64.tar.gz
解壓
[root@ldd-1 jvm]# tar -zxvf jdk-7u79-linux-x64.tar.gz
配置環境變數
Ldd-1
[root@ldd-1 ~]# vi /etc/profile.d/jdk.sh
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_79
export JRE_HOME=//usr/lib/jvm /jdk1.7.0_79/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
生效環境變數
Ldd-1
[root@ldd-1 ~]# source /etc/profile
檢查是否安裝成功
java -version
**2.安裝maven並配置環境變數**
下載maven安裝包
版本為3.3.9,將其放入/usr/lib/soft/ 目錄下(建立soft資料夾 mkdir soft),
Ldd-1
[ [email protected]ldd-1 ~]# cd /usr/lib/soft/
[[email protected]ldd-1 soft]# ls
apache-maven-3.3.9-bin.tar.gz
解壓
[root@ldd-1 soft]# tar -zxvf apache-maven-3.3.9-bin.tar.gz
配置maven環境變數
[root@ldd-1 ~]# vi /etc/profile
在profile檔案中新增
export MAVEN_HOME=/usr/lib/soft/apache-maven-3.3.9
export PATH=.:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
生效環境變數
Ldd-1
[root@ldd-1 ~]# source /etc/profile
檢查是否安裝成功
mvn -version
**3.安裝依賴庫**
[root@ldd-1 ~]# yum -y install svn ncurses-devel gcc*
[root@ldd-1 ~]# yum -y install lzo-devel zlib-devel autoconf automake libtool cmake openssl-devel
**4.安裝protocolBuffer**
下載protocolBuffer安裝包
版本為2.5.0,將其放入/usr/lib/soft/ 目錄下(建立soft資料夾 mkdir soft),
Ldd-1
[[email protected]ldd-1 ~]# cd /usr/lib/soft/
[[email protected]ldd-1 soft]# ls
protobuf-2.5.0.tar.gz
解壓
[root@ldd-1 soft]# tar -zxvf protobuf-2.5.0.tar.gz
配置環境變數
Ldd-1
[root@ldd-1 ~]# cd /usr/lib/soft/protobuf-2.5.0
[root@ldd-1 protobuf-2.5.0]# ./configure
[root@ldd-1 protobuf-2.5.0]# make
[root@ldd-1 protobuf-2.5.0]# make install
檢查是否安裝成功
[root@ldd-1 ~]# protoc --version
libprotoc 2.5.0
**5.安裝findbugs並配置環境變數**
下載findbugs安裝包
版本為3.0.1,將其放入/usr/lib/soft/ 目錄下,
Ldd-1
[[email protected]ldd-1 ~]# cd /usr/lib/soft/
[[email protected]ldd-1 soft]# ls
findbugs-3.0.1.tar.gz
解壓
[root@ldd-1 soft]# tar -zxvf findbugs-3.0.1.tar.gz
配置環境變數
Ldd-1
[root@ldd-1 ~]# vi /etc/profile
在profile檔案末尾追加
export FINDBUGS_HOME=/usr/lib/soft/findbugs-3.0.1
export PATH=$PATH:$FINDBUGS_HOME/bin
[root@ldd-1 ~]# source /etc/profile
[root@ldd-1 ~]# findbugs -version
**6.編譯Hadoop**
下載hadoop安裝包,版本為2.7.3,將其放入/usr/lib/soft/ 目錄下,
Ldd-1
[[email protected]ldd-1 ~]# cd /usr/lib/soft/
[[email protected]ldd-1 soft]# ls
hadoop-2.7.3-src.tar.gz
解壓
[root@ldd-1 soft]# tar -zxvf hadoop-2.7.3-src.tar.gz
進入原始碼目錄執行編譯
[root@ldd-1 soft]# cd hadoop-2.7.3-src
[root@ldd-1 hadoop-2.7.3-src]# mvn clean package -Pdist,native -DskipTests -Dtar
參考教程:
http://blog.csdn.net/young_kim1/article/details/50269501
http://blog.csdn.net/linlinv3/article/details/49358217
二、編譯問題總結
1.錯誤描述: Failed to find a viable JVM installation under JAVA_HOME
【解決方法】
進入到hadoop-2.7.3-src目錄下的src目錄
cd /soft-cy/hadoop-2.7.3-src/hadoop-common-project/hadoop-common/src
編輯JNIFlags.cmake檔案
vim JNIFlags.camke
在檔案中新增以下程式碼(圖中紅色圈出的部分)
ELSEIF (CMAKE_SYSTEM_PROCESSOR MATCHES "^sw_64")
SET(_java_libarch "sw")
附:
上圖中配置的“sw”的路徑:/usr/lib/jvm/java-1.7.0-swjdk-H2586P.sw_64/jre/lib