Eclipse,hadoop2.7.2 hadoop-eclipse-plugin.jar的制作
装好了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