在eclipse下編譯hadoop2.0源碼

來源:互聯網
上載者:User

Hadoop是一個分布式系統基礎架構,由apache基金會維護並更新。官網地址: http://hadoop.apache.org/

Hadoop項目主要包括以下4個模組:

  • Hadoop Common: 為其他Hadoop模組提供基礎設施。
  • Hadoop HDFS: 一個高高靠、高輸送量的Distributed File System。
  • Hadoop MapReduce: 一個分布式的計算架構,包括任務調度和叢集資源管理。
  • Hadoop YARN: 一個新的MapReduce架構。有興趣的同學請參考: http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/

由於項目的需要,我只需要用到Hadoop中的前兩個子模組,即Hadoop Common和Hadoop HDFS。

在編譯源碼之前,我先介紹一下我的開發環境:

  • Ubuntu 12.04 LTS
  • Eclipse 4.3
  • JDK1.6.0_45
  • Maven 3.0.4
  • SVN1.6.17
  • ProtocolBuffer(貌似Ubuntu內建了,如果沒有,請自行下載安裝)

最新的Hadoop採用maven作為項目構建工具,所以系統需要安裝maven。下面正式開始Hadoop源碼的編譯之旅。

首先用svn簽出Hadoop的最新版本(hadoop 2.*):

svn checkout http://svn.apache.org/repos/asf/hadoop/common/trunk/ hadoop-dev

開啟hadoop-dev檔案夾,目錄結構如

這就是Hadoop的原始碼目錄,順便統計了一下原始碼行數,1231074(包含注釋、空行)。本文主要關心兩個子項目,分別是hadoop-common-project、hadoop-hdfs-project。

接下來就需要為匯入Eclipse構建Hadoop項目,雖然我們只關心上面提到的兩個子項目,但是為了防止後續出現依賴問題,在構建時請在項目根目錄下執行命令:

cd ~/hadoop-devmvn install -DskipTestsmvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true

在執行mvn(即maven)命令時,請保證網路連接正常,因為mvn可能會下載一些Jar包來解決依賴問題。這可能需要花一段時間,完成上面的命令後,匯入eclipse的準備工作已經做好了。

在匯入之前,我們還有一個工作,就是安裝eclipse的maven外掛程式。安裝的方法這裡不做介紹。

接下來的工作是匯入Eclipse中進行編譯,開啟eclipse,步驟如下:

  • 菜單File->Import...
  • 選擇"Existing Projects into workspace"
  • 選擇hadoop-dev目錄下的 hadoop-common-project 目錄作為根目錄
  • 選擇hadoop-annotations, hadoop-auth, hadoop-auth-examples, hadoop-nfs 和 hadoop-common projects
  • 單擊 "Finish"
  • 菜單File->Import...
  • 選擇"Existing Projects into workspace"
  • 選擇hadoop-dev目錄下的hadoop-assemblies目錄作為根目錄
  • 選擇hadoop-assemblies project
  • 單擊"Finish"
  • 菜單File->Import...
  • 選擇"Existing Projects into workspace"
  • 選擇hadoop-dev目錄下的hadoop-hdfs-project目錄作為根目錄
  • 選擇hadoop-hdfs project
  • 單擊"Finish"

由於我的項目只要用到hadoop的這幾個模組,因此只匯入了hadoop的部分模組,如果你們想匯入其他的模組進行二次開發,可按上面相同的方式匯入相應的子項目。

接下來就是利用eclipse編譯hadoop,單擊Run->Run Configuration...,會開啟回合組態對話方塊,我們可以看到左側有個Maven Build,雙擊Maven Build會建立一個配置頁,按照的方式填寫

注意,Base directory 填寫的是hadoop項目的根目錄,即 ~/hadoop-dev。單擊Run,hadoop項目就開始編譯了,這需要花一些時間,注意在這期間請保持網路連接正常。原因同上。

其實上面的過程也可以由命令列來完成,eclipse外掛程式那一步都可以省了,命令列編譯方法如下:

cd ~/hadoop-devmvn package -Pdist -DskipTests -Dtar

回到eclipse,編譯成功後,eclipse的console視窗會輸出BUILD SUCESS資訊,這表示hadoop項目已經編譯成功。

為了調試hadoop, 接下來的工作就是利用上面編譯成功的hadoop構建hadoop環境。

前面編譯的結果都儲存在各個項目的target目錄下,以hadoop-common為例,編譯的結果在 ~/hadoop-dev/hadoop-common-project/hadoop-common/target/hadoop-common-3.0.0-SNAPSHOT/ 下。這個目錄下面的結構如:

其他的比如hadoop-hdfs、hadoop-mapreduce等也在對應的target目錄下,路徑與上面的類似,裡面的目錄結構和是一樣的。

我們首先在使用者目錄下建立一個hadoop目錄(mkdir ~/hadoop),把的所在目錄下的所有項拷貝到這個建立的目錄下,由於我只用common和hdfs,因此我的拷貝過程只針對這兩個子項目。(目前我們有找到很好的方法編譯,只能編譯好後再從各個子項目中去拷貝,有解決方案的童鞋請一定留言~)

由於上面的過程比較繁瑣,我寫成了一個指令碼,稍後會發布到github上(附上github上指令碼的地址:https://github.com/meibenjin/hadoop2.0-configuration),如果你等不及了,就先將就著拷貝一下吧。完成上面的操作以後,~/hadoop下的目錄結構和一樣。

現在,我簡單介紹一下新版的hadoop的目錄結構, 看著很像linux的目錄結構吧。 bin和sbin目錄下是一些hadoop命令,ect目錄下就是設定檔了。share目錄下是hadoop需要用的一些jar包。

hadoop的配置我就不在這裡寫了(如有必要,我另寫一篇部落格),具體的配置可上hadoop網站查看官方文檔。也可以看這個部落格:http://www.cnblogs.com/scotoma/archive/2012/09/18/2689902.html 其中提到的slaves和yarn-site.xml檔案在hadoop-yarn-project下。 為了調試hadoop方便,請配置成偽分布模式。

配置成功以後,啟動hadoop相關的進程,命令如下:

hadoop namenode -formatstart-dfs.sh

查看進程是否啟動成功,輸入命令,jps得到輸出:

這表示,hadoop相關的進程已經成功啟動。

未完待續。。。

過程已經驗證:可行!!!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.