本文記錄在Hadoop和Eclipse安裝成功后如何配置開發環境。
版本:Hadoop2.9.1 + Eclipse Luna
想要在Eclipse中編寫Hadoop程序,主要是編譯Hadoop-Eclipse plugin。
1.去github下載編譯工具:https://github.com/winghc/hadoop2x-eclipse-plugin.git
2.按照github上的readme,進入下列目錄:

3.在上述目錄下,輸入命令:

注意根據編譯的Hadoop版本修改上述的參數:
-Dversion = Hadoop的版本號(eg.; 2.9.1)
-Dhadoop.version = Hadoop的版本號(eg.; 2.9.1)
-Declipse.home = Eclipse的安裝路徑
-Dhadoop.home = hadoop的安裝路徑
4.上述命令執行過程中會出現問題,第一個是卡在ivy-resolve-common處。
解決方法:修改src\contrib\eclipse-plugin\build.xml文件,去除對ivy的依賴:
<target name="compile" depends="init, ivy-retrieve-common" unless="skip.contrib">
修改為
<target name="compile" unless="skip.contrib">
5.第二個問題是會出現無法copy XXX.jar的error。
參考github上的解釋:

就是根據 HADDOP_INSTALL_PATH/share/hadoop/common/lib下jar包的不同版本修改 /ivy/libraries.properties中的對應版本號
6.第三個問題是Hadoop2.9.1特有的,就是安裝完成后啟動Eclipse,點擊Add New Location沒有反應,這其實是因為編譯過程中缺少了兩個包,這一個問題的解決主要感謝:
https://zhuanlan.zhihu.com/p/38630695
解決方法:修改src\contrib\eclipse-plugin\build.xml文件,主要在兩個地方做修改:


上圖中選中的兩個地方就是后加的,也就是編譯時需要多編譯兩個包。Github上只提到了需要修改Bundle Class處,但沒說還要增加<copy file …… />的部分,但只修改前者並沒有解決問題。
7.完成后,再次運行第3步中的ant命令,編譯成功后,在hadoop2x-eclipse-plugin-master/build/contrib路徑下生成了插件:hadoop-eclipse-plugin-2.9.1.jar
8.將插件復制到ECLIPSE_INSTSALL_PATH/plugins/路徑下
9.啟動eclipse,打開window===>prefernces,找到Hadoop Map/Reduce選項卡,配置hadoop installation directory目錄,指向hadoop的安裝目錄
10.打開window====>show view====>other,找到Map/Reduce Locations,使其顯示
11.點擊new hadoop locations,彈出對話框說明配置成功。
