在eclipse下編譯hadoop2.0源碼


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

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

  • Hadoop Common: 為其他Hadoop模塊提供基礎設施。
  • Hadoop HDFS: 一個高高靠、高吞吐量的分布式文件系統。
  • 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-dev
mvn install -DskipTests
mvn 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-dev
mvn 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 -format
start-dfs.sh

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

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

未完待續。。。

本文來自博客園,如果查看原文請點擊  http://www.cnblogs.com/meibenjin/p/3172889.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM