最近在使用CDH5,想找个eclipse插件用用。无奈万般百度而不得,最后发现只能自己编译。可是作为萌新从来没有编译过啊。网上找到的帖子又各不相同,只能自己摸索啦。最后为了避免遗忘,还是写个blog大致记录一下。
环境:windows,Hadoop2.3.0-CDH5.1.3,eclipse版本:kapler
1,安装Ant
版本apache-ant-1.9.6,常规的复制进去,配PATH,很简单不再赘述。
2,安装Maven
版本apache-maven-3.3.9,常规的复制进去,配PATH,很简单不再赘述。
3,安装Ivy
版本apache-ivy-2.4.0,常规的复制进去,配PATH,然后找到ivy-2.4.0.jar,把ivy-2.4.0.jar复制到%ANT_HOME%\lib 下。然后进入IVY_HOME/src/example/hello-ivy目录,运行ant可见:
4.下载CDH版本Hadoop源码
地址:http://archive.cloudera.com/cdh5/cdh/5/
下载对应版本的tar.gz文件解压到本地。我这里是D:\hadoop-2.3.0-cdh5.1.3\hadoop-2.3.0-cdh5.1.3,并把这个目录添加到HADOOP_HOME环境变量中(不添加最后运行插件过程中会报错),PATH也加入对应的${HADOOP_HOME}\bin
5.复制jar包
需要将${HADOOP_HOME}/share/hadoop/mapreduce1下面的所有jar包拷贝到
${HADOOP_HOME}/src/hadoop-mapreduce1-project 目录下面
将${HADOOP_HOME}/share/hadoop/mapreduce1/lib下面的所有内容拷贝到
${HADOOP_HOME}/src/hadoop-mapreduce1-project /lib目录下面
6.配置build.xml文件
build.xml文件在${HADOOP_HOME}/src/hadoop-mapreduce1-project/src/contrib/eclipse-plugin 目录下
target="1.7"
source="1.7"
deprecation="${javac.deprecation}"
includeantruntime="on">
修改build.properties
增加如下:
eclipse.home=D:/eclipse/
reactor.repo=https://repository.cloudera.com/content/repositories/snapshots
version=2.3.0-mr1-cdh5.1.3
修改META-INF下的MANIFEST.MF文件
Bundle-ClassPath: classes/,lib/hadoop-core.jar,lib/commons-cli-1.2.jar,lib/commons-configuration-1.6.jar,lib/commons-httpclient-3.1.jar,lib/jackson-core-asl-1.8.8.jar,lib/commons-lang-2.6.jar,lib/jackson-mapper-asl-1.8.8.jar,lib/hadoop-common-2.3.0-cdh5.1.3.jar,lib/hadoop-auth-2.3.0-cdh5.1.3.jar,lib/hadoop-hdfs-2.3.0-cdh5.1.3.jar,lib/slf4j-log4j12-1.7.5.jar,lib/slf4j-api-1.7.5.jar,lib/log4j-1.2.17.jar,lib/protobuf-java-2.5.0.jar,lib/hadoop-annotations-2.3.0-cdh5.1.3.jar,hadoop-tools-2.3.0-mr1-cdh5.1.3.jar,lib/guava-11.0.2.jar,lib/commons-collections-3.2.1.jar
位于在上一层目录中
on"/>
8.编译插件
最后进入${HADOOP_HOME}\src\hadoop-mapreduce1-project\src\contrib\eclipse-plugin执行ant即可。
执行成功后在提示的目录中可以找到jar包了,右键使用rar打开,找到plugin.xml文件在172行左右加入如下代码。添加后替代原来的plugin.xml
9.下载winutils.exe
很多地方都有,无需考虑版本问题,貌似都是一样的。放到${HADOOP_HOME}\bin 下。
如果找不到可以去http://www.aboutyun.com/thread-8311-1-1.html下载
10.插件的配置
Window→preference→hadoop 目录选择${HADOOP_HOME} \share\hadoop\mapreduce1而不是${HADOOP_HOME}。
最后说几个常见的问题:
1,ant过程中连接失败:请挂VPN
2,插件放进去点了没反应,或者等等:请查看workplace里面的log应该有报错,通常为NoClassDefFoundError,那么就把对应的jar包加到插件的jar总,并且MF文件中作对应修改。
3 .运行项目提示 java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.:忘记配置 ${HADOOP_HOME}环境。
4 .一切都弄好了为何还是连不上?提示20000 millis timeout while waiting for channel to be ready for connect. ch :?
请修改windows 的hosts文件 加入对应的全部主机,有的说是要开启windows的telnet,并且关闭防火墙。不管他们开没开,不过telnet我是没开的,防火墙倒是关了,一样成功。关键在于客户机作为hadoop集群的外部一个节点使用eclipse插件访问的时候使用的是自己hosts文件还不是hadoop集群的。所以必须在自己的客户机上配置hosts文件才行(原谅我忘记这句话参考自哪篇文章了,实在是看了太多帖子了)
最后附上成功截图一张,左边为插件的HDFS的文件浏览,右边是跑的测试操作HBase的例子。
参考:http://my.oschina.net/muou/blog/408543
http://blog.csdn.net/dwld_3090271/article/details/41546323
http://blog.csdn.net/luckymelina/article/details/19923095
http://blog.csdn.net/yunlong34574/article/details/21331927