Hadoop學習筆記–3.Hadoop原始碼eclipse編譯教程

來源:互聯網
上載者:User

1. 下載Hadoop原始碼
Hadoop 各成員原始碼:http://svn.apache.org/repos/asf/hadoop,請使用SVN下載,在SVN瀏覽器中將trunk目錄下的原始碼check-out 出來即可。請注意只check-out出SVN 上的trunk 目錄下的內容,如:
http://svn.apache.org/repos/asf/hadoop/common/trunk,
而不是http://svn.apache.org/repos/asf/hadoop/common,
原因是http://svn.apache.org/repos/asf/hadoop/common 目錄下包括了很多非原始碼檔案,很龐大,導致需要很長的check-out 時間。

2. 準備編譯環境


2.1. Hadoop代碼版本
本教程所採用的Hadoop 是北京時間2009-8-26 日上午下載的原始碼,和hadoop-0.19.x版本的差異可能較大。
2.2. 連網
編譯Hadoop 會依賴很多第三方庫,但編譯工具Ant 會自動從網上下載缺少的庫,所以必須保證機器能夠訪問Internet。
2.3. java
編譯Hadoop 要用JDK1.6 以上,網址:http://java.sun.com/javase/downloads/index.jsp。
安裝好之後,請設定好JAVA_HOME 環境變數。
2.4. Ant和Cygwin
需要使用Ant 工具來編譯Hadoop,而Ant 需要使用到Cygwin 提供的一些工具,如sed等,可以從:http://ant.apache.org/ivy/download.cgi 下載Ant,從http://www.cygwin.cn/下載Cygwin(Cygwin 的安裝,請參考《在Windows 上安裝Hadoop 教程》一文)。安裝好之後,需要將Ant 和Cygwin 的bin 目錄加入到環境變數PATH 中,如所示:

注意:在安裝Cygwin 時,建議將SVN 安裝上,因為在Ant 編譯過程中會通過SVN 下載
些檔案,但這個不是必須的,下載不成功時,並未見出錯,編譯仍然可以成功。

2.5. Eclipse

Eclipse 則可以從http://www.eclipse.org/downloads/上下載。

 

3. 編譯Hadoop


在這裡,我們以編譯Hadoop 家庭成員common 為例,對Hadoop 其它成員的編譯方法是類似的。
3.1. 編譯common成員
步驟1) 在Elipse 的Package 視圖中單擊右鍵,選擇New->Java Project,如所示:

步驟2) 選擇原始碼目錄,設定Project 名。

在所示的對話方塊中,點擊Browse 按鈕,選擇common 原始碼目錄,並設定Projectname 為common。工程匯入完成後,進入Eclipse 主介面,可以看到common 已經匯入進來,但可以看到common 上有紅叉叉,是因為Elipse 預設使用了Java Builder,而不是Ant Builder,所以下一步就是設定使用Ant Builder。
步驟3) 設定Builder 為Ant:右鍵common->Properties->Builders:

在所示的介面中,點擊New 按鈕,在彈出的對話方塊中選中Ant Builder,確定之後會彈出如下對話方塊:

點擊Browse File System 按鈕,選擇common 原始碼目錄下的build.xml 檔案,並設定Name 為common_Builder(Name 可以改成其它的,但建議使用common_Builder,因為這樣名副其實),操作結果如所示:

除所示的設定外,還需要設定如所示的Targets,建議設定成Manual Build 編譯方式,而不是Auto Build 編譯方式。因為在Auto Build 模式下,任何修改都會觸發編譯,而Manual Build 模式下,只在需要的時候,點擊編譯按鈕或菜單編譯即可。

Hadoop 各成員都需要編譯成jar,所以做如所示的一個修改:

確定之後,返回如所示的Edit Configuration 對話方塊:

上面完成後,回到Builder 的主對話方塊,再將對話方塊中的Java Builder 下移,並將它前面的勾去掉。
進入Eclipse 主介面,由於之前選擇了Manual Build,所以需要人工方式驅動編譯,編譯成功後,可以看到BUILD SUCCESSFUL 字樣。

  請注意:如果所示的菜單中的Build Automatically 被勾中,則在common 的右鍵菜單中可能不會出現Build 子功能表。
在編譯過程中,Ant 會自動從網上下載所依賴的庫。common 的編譯成功結束後,可以在build 目錄下找到編譯後產生的檔案hadoop-core-0.21.0-dev.jar。

3.2. 編譯Hadoop其它成員
  hdfs、mapreduce 和hive 的編譯方式同common。

 

4. FAQ

4.1. 連網
  確保可以上internet,Ant 需要自動下載很多第三方依賴庫,如果不能連網,編譯會複雜很多。
4.2. 編譯hive
  hive 的編譯相對複雜些,而且預設它會編譯多個版本的hive,建立修改shims 目錄下的ivy.xml 檔案,去掉不必要版本的編譯。
4.3. 編譯組建檔案位置
  common 編譯後產生build\hadoop-core-0.21.0-dev.jar;
  hdfs 編譯後產生build\hadoop-hdfs-0.21.0-dev.jar;
  mapreduce 編譯後產生build\hadoop-mapred-0.21.0-dev.jar;
  hive 編譯後產生build\service\hive_service.jar,請注意並沒有直接放在build 目錄下;
  hbase 編譯後產生build\hbase-0.21.0-dev.jar;
  有時候在編譯某個時出錯,可先跳過,編譯其它的,Refresh 之後再編譯。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.