hadoop0.20.2在eclipse中的編譯
2. 準備編譯環境
2.1. 系統
CentOS5.5
2.2. Hadoop程式碼版本
hadoop-0.20.2-release
2.3. 聯網
編譯Hadoop 會依賴很多第三方庫,但編譯工具Ant 會自動從網上下載缺少的庫,所以必須保證機器能夠訪問Internet。
2.4. java
編譯Hadoop要用JDK1.6 以上,網址:http://java.sun.com/javase/downloads/index.jsp。
安裝好之後,請設定好JAVA_HOME 環境變數。
2.5. Ant
需要使用Ant 工具來編譯Hadoop,可以從:http://ant.apache.org/ivy/download.cgi 下載Ant
安裝好之後,請設定好ANT_HOME 環境變數。
2.6. Eclipse
3. 編譯Hadoop
3.1. 編譯Hadoop
步驟1) 在Elipse 的Package 檢視中單擊右鍵,選擇New->Java Project,如下圖所示:
在上圖所示的對話方塊中,點選Browse 按鈕,選擇hadoop-0.20.2 原始碼目錄,並設定Projectname 為hadoop-0.20.2-dev。工程匯入完成後,進入Eclipse 主介面,可以看到hadoop-0.20.2 已經匯入進來,但可以看到目錄上有紅叉叉,是因為Elipse預設使用了Java Builder,而不是Ant Builder,所以下一步就是設定使用Ant Builder。
步驟3) 設定Builder 為Ant:右鍵hadoop-0.20.2-dev>Properties->Builders:
點選Browse File System 按鈕,選擇hadoop-0.20.2原始碼目錄下的build.xml 檔案,並設定Name 為Ant_Builder(Name 可以改成其它的,但建議使用Ant_Builder,因為這樣名副其實),操作結果如下圖所示:
Hadoop 各成員都需要編譯成jar,所以做如下圖所示的一個修改:
上面完成後,回到Builder 的主對話方塊,再將對話方塊中的Java Builder 下移,並將它前面的勾去掉。
進入Eclipse 主介面,由於之前選擇了Manual Build,所以需要人工方式驅動編譯,編譯成功後,可以看到BUILDSUCCESSFUL 字樣。
請注意:如果上圖所示的選單中的BuildAutomatically 被勾中,則在common的右鍵選單中可能不會出現Build 子選單。
在編譯過程中,Ant 會自動從網上下載所依賴的庫。hadoop-0.20.2 編譯成功結束後,可以在build 目錄下找到編譯後生成的檔案hadoop-core-0.20.2-dev.jar。
3.2編譯過程中出現錯誤
1、可能有時候因為eclipse版本或者作業系統版本的問題使得hadoop提供的eclipse plugin不太好用。
解決方法:
1)修改$HADOOP_HOME/src/contrib/build-contrib.xml
增加一行:<propertyname="eclipse.home" location="/home/gushui/eclipse"/>
上句後面的/home/gushui/eclipse由自己的$ECLIPSE_HOME代替
2)修改$HADOOP_HOME/src/contrib/eclipse-plugin/src/java/org/apache/hadoop/eclipse/launch/HadoopApplicationLaunchShortcut.java
註釋掉原來的//importorg.eclipse.jdt.internal.debug.ui.launcher.JavaApplicationLaunchShortcut;
改為importorg.eclipse.jdt.debug.ui.launchConfigurations.JavaApplicationLaunchShortcut;
2、報錯:
Buildfailed
Cannot write to the specified tarfile!
解決方法:
hadoop-0.20.2-dev目錄下的Build.xml中
<!--
<tar compression="gzip"destfile="${build.classes}/bin.tgz">
<tarfileset dir="bin"mode="755"/>
</tar>
-->
登出掉,執行成功。
參考:http://hadoop.hadoopor.com/thread-941-1-1.html轉自http://www.cnblogs.com/zyumeng/archive/2013/03/22/2975165.html