從零開始的 Win7 64Bit 編譯Hadoop3

前言

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

準備工做

首先到官網下載hadoop3.0的源碼包 點我下載c++

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

打開其中的BUILDING.txt 裏面有windows下編譯的指導,以下所示:apache

上圖所示的大部分環境都是直接下載,而後配置到環境變量便可。可是有幾步很是容易出錯。windows

1.若是須要安裝Windows SDK 7.1的話,須要折騰折騰(只怪本身電腦上環境太雜),我下載了不少個版本都不能安裝(win7 64bit),最後是在stackoverflow上找到了一個哥們提供的下載地址,纔可以正常的安裝(點我下載)。在安裝windowsSDK 7.1 以前 請卸載全部MicroSoft Visual c++ 2010及其版本以上的全部庫。卸載.NET Framework4.0 以上的版本。 maven

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

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

在64位的機器下,請配置Platform的系統變量爲x64,不然會在編譯hadoop-common時出錯,我就是在這裏摔了一跤。lua

4.若是使用的是vs請使用vs2010專業版spa

開始編譯

等全部的環境都配置OK了,咱們就能夠進行編譯了。

分別選擇開始>>全部程序>>Microsoft Windows SDK v7.1>>Windows SDK Command Prompt(右鍵管理員身份運行),啓動以下界面

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

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]

解決辦法:

大體意思是,卸載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: 傳送門

大體意思是卸載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

官方文檔

相關文章
相關標籤/搜索