1. 程式人生 > >從零開始的 Win7 64Bit 編譯Hadoop3

從零開始的 Win7 64Bit 編譯Hadoop3

前言

最近在接觸Hadoop方面的知識。去官網逛了一圈發現最新版本已經是3.0.0-alpha1了。剛好在搭建Hadoop的環境,就決定使用最新版本的Hadoop試試水。因為自己使用的機器是windows的,逛了一圈沒有3.0的編譯版本(windows下需要hadoop.dll,winutils.exe),就決定自己來試著編譯。歷時一天半,終於編譯成功(實際編譯時間,除去依賴包的下載大概20分鐘左右),過程可謂是艱辛。於是寫下這篇文章,鞏固一下,並將編譯過程中遇到的一些問題及解決辦法分享給需要的人。

準備工作

首先到官網下載hadoop3.0的原始碼包 點我下載

下載完後解壓到自定義目錄 

134009_qU8s_2341314.png

開啟其中的BUILDING.txt 裡面有windows下編譯的指導,如下所示:

134144_SZin_2341314.png

上圖所示的大部分環境都是直接下載,然後配置到環境變數即可。但是有幾步非常容易出錯。

1.如果需要安裝Windows SDK 7.1的話,需要折騰折騰(只怪自己電腦上環境太雜),我下載了很多個版本都不能安裝(win7 64bit),最後是在stackoverflow上找到了一個哥們提供的下載地址,才能夠正常的安裝(點我下載)。在安裝windowsSDK 7.1 之前 請解除安裝所有MicroSoft Visual c++ 2010及其版本以上的所有庫。解除安裝.NET Framework4.0 以上的版本。 

2.請使用ProtocolBuffer 2.5.0版本,高版本的在編譯時會報錯

3.還需注意的一個地方是,在文件中特別提到的以下內容

135538_dNjN_2341314.png

在64位的機器下,請配置Platform的系統變數為x64,否則會在編譯hadoop-common時出錯,我就是在這裡摔了一跤。

135648_2NGj_2341314.png

4.如果使用的是vs請使用vs2010專業版

135838_i4Fj_2341314.png

開始編譯

等所有的環境都配置OK了,我們就可以進行編譯了。

分別選擇開始>>所有程式>>Microsoft Windows SDK v7.1>>Windows SDK Command Prompt(右鍵管理員身份執行),啟動如下介面

140413_m3b4_2341314.png

然後切換到最開始下載的原始碼包的目錄下,執行

mvn package -Pdist,native-win -DskipTests -Dtar

就會開始自動下載依賴包並且編譯,如果不出意外的話(下載包我下了一個多小時 = = )20分鐘左右就會編譯成功。

編譯好的檔案在 /原始碼目錄/hadoop-dist/target/下面  請敬請享用

填坑之路

問題一 編譯 Hadoop-Common時出錯

1.Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.1:exec (c ompile-ms-winutils) on project hadoop-common: Command execution failed. Process exited with an error: 2 找不到檔案

解決辦法:請將C:\Windows\Microsoft.NET\Framework64\v4.0.30319 新增到系統變數的Path即可

2.Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.3.1:exec (c ompile-ms-winutils) on project hadoop-common: Command execution failed. Process exited with an error: 1 (Exit value: 1) -> [Help 1]

解決辦法:

142203_YcQa_2341314.png

大致意思是,解除安裝vs2010以上的版本,解除安裝vs c++2010 Redistributable(64位和32位)的,解除安裝 .NET Framework 4.5 重啟後 安裝 .NET Framework 4.0 再安裝windows SDK 7.1(重新安裝)

如果以上方法不能解決的話,請嘗試配置Platform的系統變數。

或者參考: 傳送門

問題二 編譯時出現 around Ant part xxx\xxx\build-main.xml 出錯

解決辦法1: 傳送門

143029_mjIo_2341314.png

大致意思是解除安裝vs不乾淨導致的,需要手動清除登錄檔,登錄檔位置如圖所示,不過在下面的對話中可以看出出現這個問題不僅僅是因為這個原因。可以通過檢視錯誤日誌(xx\target\native\下面),來看是否是這個問題,出現這個問題的錯誤日誌是

MSBUILD : Configuration error MSB4146: 
Cannot evaluate the property expression "$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V120\'))"

解決辦法2:安裝vs2010

解決辦法3:刪除對於目錄下的target目錄。重新下載編譯

其他辦法,暫未發現

結束語

本次編譯過程中遇到了很多的問題,也用了很多時間。不過當出現BUILD SUCCESS的時候,覺得這些都是值得的。

通過本次編譯的收穫是 多看官方提供的文件 好好學知識 好好學英語 多多思考 

分享一波編譯好的版本 : 點我下載  鑰匙:28pg

參考:

http://coderearth.org/building-hadoop-26-on-64-bit-windows-7.html

http://www.srccodes.com/p/article/38/build-install-configure-run-apache-hadoop-2.2.0-microsoft-windows-os

官方文件