裝好了hadoop后發現有裝個eclipse的必要,於是參照文章A(http://www.powerxing.com/hadoop-build-project-using-eclipse/)進行安裝,在安裝hadoop-eclipse-plugin的過程中遇到了很多麻煩,花了三天時間才搞定(昨天搞定的),有必要記錄下。
系統:Ubuntu14.04
eclipse版本: eclipse-standard-kepler-SR2-linux-gtk-x86_64 安裝路徑: /opt
hadoop版本: hadoop.2.7.2 安裝路徑:/usr/local
文章A中使用的是GitHub(https://github.com/winghc/hadoop2x-eclipse-plugin)提供的hadoop-eclipse-kepler-plugin-2.6.0.jar,
但是我的hadoop版本是2.7.2,所以需要另外制作插件,好在這篇Github文章提供了怎么build插件的方法。
下載hadoop2x-eclipse-plugin-master,按照說明進行build
ant jar -Dversion=2.7.2 -Dhadoop.version=2.7.2 -Declipse.home=/opt/eclipse -Dhadoop.home=/usr/local/hadoop
結果報錯(Error:不能copy jar包到哪哪,沒有發現jar包之類的),一看應該是沒有找到對應的jar文件,所以不能copy報了錯。Github的文字也提供了complie issues resolve:
- For different hadoop, adjust ${hadoop2x-eclipse-plugin-master}/ivy/libraries.properties, to match hadoop dependency lib version
肯定是jar包版本不對了,打開libraries.properties修改之。那么多的jar包,哪去找正確的版本號呢?
之前的報錯信息里有,build過程中copy的jar包都來源與$HADOOP_HOME/share/hadoop/common/lib($HADOOP_HOME是hadoop的安裝目錄)
好,對照這一個一個把版本號改好了,又來
ant jar -Dversion=2.7.2 -Dhadoop.version=2.7.2 -Declipse.home=/opt/eclipse -Dhadoop.home=/usr/local/hadoop
然后開始了漫長的編譯過程,爐石打起。
22min后,看到BUILD SUCCESS了,立馬去找編譯好的jar包,(路徑:${hadoop2x-eclipse-plugin}/build/contrib/eclipse-plugin/),結果沒有發現應該出現的hadoop-eclipse-plugin-2.7.2.jar包,想半天不清楚原因,那就sudo下試試。
然后看到了不一樣的輸出,編譯過程中在mkdir,所以剛才是權限不夠所以mkdir沒有成功,居然都不報個錯出來,白等了那么久,坑啊~
只用了30多秒就BUILD SUCCESS了。繼續參照文章A的步驟,將hadoop-eclipse-plugin-2.7.2jar copy到 /opt/eclipse/plugins下, 命令行執行 /opt/eclipse/eclipse -clean
配置好 Hadoop-Eclipse-Plugin,結果在想點開DFS Location下的文件目錄時報錯:an internal error occurred during: "Connecting to DFS ..."
明明build success了啊,為什么還要出錯,Hadoop-Eclipse-Plugin配置錯啦?Hadoop配置錯啦?Eclipse版本有問題啦?還是說有什么權限問題?作為一個小白,不能從原理上去思考解決問題,只能各種百度google,但與hadoop2.7.2有關的信息都很少,基本都是在解決老版本上遇到的問題,沒有能夠直接解決我遇到的問題的,然后一天過去了...
找到了一些文章:
http://stackoverflow.com/questions/15195734/hadoop-eclipse-mapreduce-is-not-working
http://stackoverflow.com/questions/16382728/eclipse-connection-dfs-location
表明了可能我的插件hadoop-eclipse-plugin-2.7.2.jar中缺少必要的jar包,怎么知道缺少那些包呢?然后又是一天的百度google...
同樣網上的解答都是關於老版本的,Hadoop2.7.2所需要的jar包比hadoop0.2所需要的jar包多了去了,他們缺的我這里都沒缺。
不過文章http://blog.sina.com.cn/s/blog_6c288ff50102v4il.html給了我些啟示。
file-roller /opt/eclipse/plugins/hadoop-eclipse-plugin-2.7.2.jar
看到打包進去的jar包,然后和Github提供的hadoop-eclipse-kepler-plugin-2.6.0.jar進行對比,發現我沒有commons-httpclient-3.1-jar而我沒有,添加進去,
opt/eclipse/eclipese -clean
仍然會報出同樣的錯,應該還少jar包。上網查半天還是不知道少了那些包,實在是有點郁悶了,放一放,看美劇打爐石。
第三天一早,往電腦前一坐,突然靈光一現,想起網上有個hadoop2.7.2的eclipse插件(http://download.csdn.net/download/tondayong1981/9432425),先看看這個插件能不能用。這個插件是Tested with following eclipse version for hadoop2.7.2: Eclipse Java EE IDE for Web Developers. Version: Mars.1 Release (4.5.1) Build id: 20150924-1200,為了控制變量,我還去下它對應版本的eclipse,在下的同時我用我的kepler試試能不能用,終於不報錯了,哈哈哈!
拿我自己編譯的插件和這個能用的插件做對比,發現除了之前已經添加進去的commons-httpclient-3.1-jar,還少了commons-io-${commons-io.version}.jar和servlet-api-${servlet-api.version}.jar,修改${hadoop2x-eclipse-plugin}/src/contrib/eclipse-plugin/build.xml,重新build,也能夠用了,至此問題得到解決。
在這里分享我改進過后的hadoop2x-eclipse-plugin-master,用來制作hadoop-eclipse-plugin.jar,這樣大家可以少走點彎路。
鏈接: http://pan.baidu.com/s/1jHiFYKI 密碼: 2yiu