1. 程式人生 > >hadoop原始碼編譯方法,以及編譯問題總結

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
這裡寫圖片描述