hadoop 2.6.4 編譯

hadoop 2.6.4 編譯 - 解決native 編譯問題


問題起因
爲了解決執行hadoop 命令時總有警告:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

這是hadoop native 庫 默認是32位編譯的,64位上會報這個錯,如果不裝會影響什麼呢?
$ hadoop checknative

沒有native 這些都不支持(感謝hadoop 羣友GTP 的熱心指導)

編譯準備及說明
需要自己編譯hadoop native 庫或下載網友編譯好的庫替換一下hadoop-2.6.4/lib/native
我在網上找了一下,全都是2.6.4 之前的版本,我怕替換後會引起坑,
本着刨根問底的學習態度,我想嘗試編譯一下:
這裏是爲了解決native的問題,所以編譯參照官方文檔的 mvn package -Pdist,native -DskipTests -Dtar

這是一個maven 項目,但是編譯過程依賴一些組件,可見BUILDING.txt

安裝依賴
yum install zlib-devel openssl-devel ant cmake

maven
環境變量 
MVN_HOME=/home/hadoop/software/apache-maven-3.3.9
PATH=$PATH:$MVN_HOME/bin
export MVN_HOME PATH

設置maven 的settings.xml
這裏指定阿里雲的maven 倉庫 ,我想會大大提高包的下載速度,畢竟中央倉庫在國外
   <mirror>
        <id>nexus-aliyun</id>
         <mirrorOf>*</mirrorOf>
     <name>Nexusaliyun</name>
     <url>http://maven.aliyun.com/nexus/content/groups/public</url>
   </mirror>


ProtocolBuffer 2.5.0
google 的,要翻牆,所以我找的是網友網盤的
http://pan.baidu.com/s/1pJlZubT
下載解壓後,cd 目錄
./configure
make && make install
protoc --version 驗證是否安裝成功

開始編譯 hadoop2.6.4
cd hadoop-2.6.4-src
mvn package -Pdist,native -DskipTests -Dtar

編譯過程中報的錯:(由於我的是jdk1.8 所以切換到1.7就解決了)
以下是在網上找到的描述,引用一下:
unexpected end tag: </ul>
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.8.1:jar (module-javadocs) on project hadoop-annotations: MavenReportException: Error while creating archive:
[ERROR] Exit code: 1 - /root/hadoop-2.4.0-src/hadoop-common-project/hadoop-annotations/src/main/java/org/apache/hadoop/classification/InterfaceStability.java:27: error: unexpected end tag: </ul>
[ERROR] * </ul>
[ERROR] ^
[ERROR] 
[ERROR] Command line was: /root/jdk1.8.0/jre/../bin/javadoc @options @packages
原因是InterfaceStability.java中的註釋問題:
解決辦法,將JDK換成1.7版本,使用JDK1.8編譯就會遇到上述問題,將</ul>行刪除可以解決問題,但後續還會遇到類似的問題,所以不要使用JDK1.8編譯Hadoop 2.4.0。


至此,編譯完成
生成的native 在 hadoop-dist/target/hadoop-2.6.4/lib/
另外,需在hadoop-env.sh 中加入:
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"
即可解決問題

我編譯的資源已上傳:http://download.csdn.net/detail/sagaryu/9596973 (無需積分)

整個編譯大約持續了26分鐘,如圖:



本人新接觸hadoop,有很多不懂,建了個交流羣:149174228 希望高人加入指點


謝謝


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