linux下hadoop2.6.1源碼64位的編譯



linuxhadoop2.6.1源碼64位的編譯

一、 前言

    Apache官網上提供的hadoop本地庫是32位的,如果我們的Linux服務器是64位的話,就會現問題。

    我們在64位服務器執行Hadoop命令時,則會報以下錯誤:

    WARNutil.NativeCodeLoader: Unable to load native-hadoop library for yourplatform... using builtin-java classes where applicable

  爲了解決上述問題,我們就需要自己編譯一個64位的hadoop版本。

編譯hadoop2.6.1需要的軟件

  1. jdk 1.7
  2. gcc 4.4.5
  3. maven 3.3.3
  4. protobuf 2.5.0
  5. cmake 2.8.12.2
  6. ant 1.9.6
  7. finbugs(可選擇)

注意:
1)在百度中搜索各個軟件的名稱,最好到官網上下載,下載軟件一定注意軟件的版本
2)finbugs不是編譯所必須的軟件,可以不下載。

編譯軟件的安裝

   1.jdk的安裝

  • 解壓 tar -zxvf jdk-7u79-linux-x64.tar.gz
  • 配置環境變量,編輯/etc/profile文件
  • export JAVA_HOME=/opt/jdk1.7.0_25
  • export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  • export PATH=$PATH:$JAVA_HOME/bin
  • source /etc/profile 刷新修改的環境變量
  • java -version  檢查jdk是否安裝成功。有以下版本號輸出即爲成功。

    

    2.gcc的安裝

一般linux上會自帶了gcc的安裝,所以在安裝以前,先檢查一下服務器上是否已經安裝了gcc。
輸入:gcc -v
如果有以下輸出,則這說明已經安裝了gcc
如機器上沒有安裝gcc,請自行安裝。 

   3.maven的安裝

  • 解壓tar -zxvf apache-maven-3.3.3-bin.tar.gz 
  • 配置環境變量,編輯/etc/profile
  • export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
  • source /etc/profile 刷新修改的環境變量
  • mvn -version  檢查maven是否安裝成功。有以下版本號輸出即爲成功。

   

   4.protobuf的安裝

  • 解壓tar -zxvf protobuf-2.5.0.tar.gz
  • 進入protobuf的解壓目錄。如:cd /opt/protobuf-2.5.0/
  • 在安裝目錄下,執行以下命令:
    • ./ configure
    • make
    • make check
    • make install
  • protoc --version(注意命令中是兩個-) 檢查protoc是否安裝成功。有版本號輸出即爲成功。

  

  5.cmake的安裝

  • tar -zxvf cmake-2.8.12.2.tar.gz
  • 進入cmake的解壓目錄。如:cd /opt/cmake-2.8.12.2/
  • 在安裝目錄下,執行以下命令:
    • ./ bootstrap
    • make
    • make install
  • cmake -version 檢查cmake是否安裝成功。有版本號輸出即爲成功。

 

  6.ant的安裝

  • 解壓tar -zxvf apache-ant-1.9.6-bin.tar.gz
  • 編輯環境變量,編輯/etc/profile
  • export ANT_HOME=/opt/apache-ant-1.9.6
  • export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$ANT_HOME/bin
  • source /etc/profile 刷新修改的環境變量
  • ant -version檢查ant是否安裝成功。有以下版本號輸出即爲成功。

 

  7.安裝必要的包

  • 安裝 autotool
    • 執行命令:yum install autoconf automake libtool
  • 安裝 openssl-devel
    • 執行命令:yum install openssl-devel

編譯hadoop2.6.1

  • 在Apache官網上,下載hadoop-2.6.1的源碼包hadoop-2.6.1-src.tar.gz。
  • 解壓源碼包tar -zxvf hadoop-2.6.1-src.tar.gz
  • 進入hadoop-2.6.1-src解壓目錄。cd /opt/hadoop-2.6.1-src/
  • 執行命令mvn clean package -Pdist,native -DskipTests -Dtar 進行編譯。
  • 編譯過程中,需要下載很多包,等待時間比較長。當看到hadoop各個項目都編譯成功,即出現一系列的SUCCESS之後,即爲編譯成功。
  • 編譯好的安裝包hadoop-2.6.1.tar.gz,可以在文件目錄hadoop-2.6.1-src/hadoop-dist/target/下找到。

五、注意事項

  編譯過程中需要下載安裝包,有時候可能由於網絡的原因,導致安裝包下載不完整,而出現編譯錯誤。

   錯誤1

    Remote host closed connection during handshake: SSL peer shut down incorrectly.......

   解決方案:需要重新新多編譯幾次即可通過。

   錯誤2:

A required class was missing while executing XXXXXX,
          [ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy            [ERROR]urls[0] =file:/root/.m2/repository/org/codehaus/mojo/jspc/jspc-maven-plugin/2.0-alpha-3/jspc-maven-plugin-2.0-alpha-3.jar
[ERROR]urls[1]=file:/root/.m2/repository/org/codehaus/mojo/jspc/jspc-compiler-tomcat5/2.0-alpha-3/jspc-compiler-tomcat5-2.0-alpha-3.jar
[ERROR]urls[2]=file:/root/.m2/repository/tomcat/jasper-compiler/5.5.15/jasper-compiler-5.5.15.jar
[ERROR]urls[3]=file:/root/.m2/repository/javax/servlet/jsp-api/2.0/jsp-api-2.0.jar
[ERROR]urls[4]=file:/root/.m2/repository/ant/ant/1.6.5/ant-1.6.5.jar
[ERROR]urls[5]=file:/root/.m2/repository/tomcat/jasper-compiler-jdt/5.5.15/jasper-compiler-jdt-5.5.15.jar
........................

解決方案:則需要根據錯誤的提示,到相應目錄下找到包,把包刪除,然後再次重新編譯。














發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章