編譯本地64位版本的hadoop-2.6.0


   官方提供的hadoop-2.x版本貌似都是32位的,在64位機子下使用可能會報錯,最好使用官方提供的源碼進行本地編譯,編譯成適合本地硬件環境的64位軟件包。

關於native

   Hadoop是使用Java語言開發的,但是有一些需求和操作並不適合使用java,所以就引入了本地庫(Native Libraries)的概念,通過本地庫,Hadoop可以更加高效地執行某一些操作。

   native位於hadoop-2.x.x/lib/native目錄下,僅支持linux和unix操作系統。

   hadoop中的zlib和gzip模塊會加載本地庫,如果加載失敗,會提示:WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

   可以在core-site.xml中配置hadoop.native.lib值是否使用本地庫,默認值為true。

   官方提供的hadoop-2.x版本中,native文件都是32位編譯的,在實際使用64位環境中,建議本地編譯后再使用。

   參考:http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/NativeLibraries.html

編譯步驟

   本次編譯環境:CentOS 5.5 + jdk7 + hadoop-2.6.0-src.tar.gz。為了加快編譯過程,盡量將CentOS的內存設置的大一些,還有,編譯過程中CentOS必須保持連網狀態

1、安裝JDK、maven、findbugs(可選步驟)

   實驗版本:jdk-7u75-linux-x64.tar.gzapache-maven-3.0.5-bin.tar.gzfindbugs-3.0.0.tar.gz,分別解壓到/usr/local目錄下,然后配置環境變量:vi /etc/profile,配置內容如下:

export JAVA_HOME=/usr/local/jdk1.7.0_75
export MAVEN_HOME=/usr/local/apache-maven-3.0.5/
export FINDBUGS_HOME=/usr/local/findbugs-3.0.0/
export PATH=.:$MAVEN_HOME/bin:$JAVA_HOME/bin:$FINDBUGS_HOME/bin:$PATH
View Code

   驗證:① java -version;② mvn -version;③ findbugs -version

2、安裝protoc

   protoc buffer是hadoop的通信工具,編譯過程需要安裝。實驗版本:protobuf-2.5.0.tar.gz,官網:https://code.google.com/p/protobuf/downloads/list。

   安裝編譯工具:① yum install -y gcc;② yum intall -y gcc-c++;③ yum install -y make,操作系統已安裝的不必重復安裝。

   進入/usr/local,順序執行命令:① tar -zxvf protobuf-2.5.0.tar.gz;② cd protobuf-2.5.0;③ ./configure --prefix=/usr/local/protoc/;④ make && make install

   安裝完成后,配置環境變量,增加:export PROTOC_HOME=/usr/local/protoc/,和export PATH=..:$PROTOC_HOME/bin:..

   驗證:protoc --version

3、安裝其他依賴

   執行命令:① yum install -y cmake;② yum install -y openssl-devel;③ yum install -y ncurses-devel

4、開始編譯工作

   從官網下載需要編譯的hadoop源碼版本,本次實驗:hadoop-2.6.0-src.tar.gz,官網下載:http://archive.apache.org/dist/hadoop/core/stable/

   進入/usr/local,執行解壓操作:tar -zxvf hadoop-2.6.0-src.tar.gz,然后修改一個hadoop-2.x共有的bug(詳見https://issues.apache.org/jira/browse/HADOOP-10110),編輯文件:usr/local/hadoop-2.6.0-src/hadoop-common-project/hadoop-auth/pom.xml,第55行左右增加如下內容:

<dependency>
         <groupId>org.mortbay.jetty</groupId>
         <artifactId>jetty-util</artifactId>
         <scope>test</scope>
</dependency>
View Code

   然后進入目錄/usr/local/hadoop-2.6.0-src中,執行命令:mvn package -DskipTests -Pdist,native,docs,其中docs根據需要添加。

   編譯大概需要二三十分鍾,看到一堆的SUCCESS,說明編譯成功,編譯后的項目在hadoop-2.6.0-src/hadoop-dist/target/hadoop-2.6.0中。

   只需要將編譯后項目中的/hadoop-dist/lib/native文件夾覆蓋至之前32位的項目中即可(當然整個項目覆蓋也可以),並在配置文件$HADOOP_HOME/etc/hadoop/hadoop-env.sh末尾添加:export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_HOME/lib/native"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM