編譯Hadoop 2.6.0

0x00 ? ?緣由

由于我們從Hadoop的Apache網(wǎng)站上下載的hadoop包是在32位機器上編譯的。因此,如果我們的機器的64位的,在使用的時候就會出現(xiàn)問題。所以,我們要在64位機器上重新編譯hadoop。


0x01 ? ?準備

OS: CentOS6 64位 ? ? ? ?Hadoop版本:2.6.0

Hadoop2.6.0源碼下載地址:

http://archive.apache.org/dist/hadoop/common/hadoop-2.6.0/hadoop-2.6.0-src.tar.gz


0x02 ? ?編譯前的準備工作

參考BUILDING.txt

hadoop2.6.0目錄下,有一個BUILDING.txt文件,這是編譯的說明。

Build instructions for Hadoop

------------------------------------------------------------------

Requirements:

* Unix System

* JDK 1.6+

* Maven 3.0 or later

* Findbugs 1.3.9 (if running findbugs)

* ProtocolBuffer 2.5.0

* CMake 2.6 or newer (if compiling native code)

* Zlib devel (if compiling native code)

* openssl devel ( if compiling native hadoop-pipes )

* Internet connection for first build (to fetch all Maven and Hadoop dependencies)

------------------------------------------------------------------

把JDK、Maven、ProtocolBuffer2.5.0、Cmake、zlib、openssl-devel先安裝好


0x03 ? ?編譯

依然參考BUILDING.txt

------------------------------------------------------------------

Building distributions:

Create binary distribution without native code and without documentation:

$ mvn package -Pdist -DskipTests -Dtar

Create binary distribution with native code and with documentation:

$ mvn package -Pdist,native,docs -DskipTests -Dtar

Create source distribution:

$ mvn package -Psrc -DskipTests

Create source and binary distributions with native code and documentation:

$ mvn package -Pdist,native,docs,src -DskipTests -Dtar

Create a local staging version of the website (in /tmp/hadoop-site)

$ mvn clean site; mvn site:stage -DstagingDirectory=/tmp/hadoop-site

------------------------------------------------------------------

進入Hadoop2.6.0目錄下:

這里我們使用:?mvn package -Pdist,native,docs,src -DskipTests -Dtar來編譯

注:為了防止在編譯的時候出現(xiàn)內(nèi)存溢出的錯誤,我們需要手動指定一下maven使用內(nèi)存的大小

Handling out of memory errors in builds

------------------------------------------------------------------

If the build process fails with an out of memory error, you should be able to fix

it by increasing the memory used by maven -which can be done via the environment

variable MAVEN_OPTS.

Here is an example setting to allocate between 256 and 512 MB of heap space to

Maven

export MAVEN_OPTS="-Xms256m -Xmx512m"

------------------------------------------------------------------

編譯順利的話,一個小時左右,就能完成編譯。

編譯好生成的hadoop文件在這個目錄下:hadoop-2.6.0-src/hadoop-dist/target/

有一個文件:hadoop-2.6.0.tar.gz

就是我們編譯好的hadoop2.6.0


0x04 ? ?編譯時遇到的幾個錯誤

-錯誤1:

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 - /opt/hadoop-2.6.0-src/hadoop-common-project/hadoop-annotations/src/main/java/org/apache/hadoop/classification/InterfaceStability.java:27: error: unexpected end tag:

解決辦法:在編譯命令后面加個Dmaven.javadoc.skip=true的參數(shù)即可

mvn clean package -Pdist,native,docs,src -DskipTests -Dtar -Dmaven.javadoc.skip=true

-錯誤2:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (site) on project hadoop-common: An Ant BuildException has occured: input file /opt/hadoop-2.6.0-src/hadoop-common-project/hadoop-common/target/findbugsXml.xml does not exist

[ERROR] around Ant part ...... @ 44:234 in /opt/hadoop-2.6.0-src/hadoop-common-project/hadoop-common/target/antrun/build-main.xml

解決辦法:去掉編譯命令中的docs參數(shù)

mvn clean package -Pdist,native,src -DskipTests -Dtar -Dmaven.javadoc.skip=true


解決了這兩個報錯,編譯應該就沒有什么問題了。

我自己編譯的時候遇到了這兩個報錯,編譯hadoop2.5.2的方法同上!


hadoop-build-success

可以看到,編譯完成用了20多分鐘。不同的機器配置,可能耗費的時間會有所不同。


不足之處,請批評指正。

如有問題,請私信聯(lián)系。

謝謝!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容