最近在学习hadoop,花了不少时间来编译及安装hadoop的eclipse插件,记下来以后使用以及让别人少走弯路。
- 编译环境:
- os:Ubuntu15.04
- jdk:1.6.0_43 安装后并配置环境变量
- ant:1.9.6 解压后配置环境变量
- eclipse4.4.2 解压后即可
- hadoop1.2.1
编译过程:
编译hadoop很简单,但是直接编译代码生成的插件由于缺少一些依赖的jar包,所以不能使用,因此要修改配置文件,然后再执行命令即可。
1)首先进入hadoop的源代码目录src/contrib/eclipse-plugin,可以发现build.xml,此为编译的配置文件。如图所示:
2)修改build.xml配置文件。
a.在id为classpath的标签中添加hadoop的包,保证编译时可以找到相关依赖的包。
<fileset dir="${hadoop.root}">
<include name="**/*.jar" />
</fileset>
b.将target为jar的标签进行修改,将前两个copy注释掉,修改为如下:
<!--
<copy file="${hadoop.root}/build/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>
<copy file="${hadoop.root}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.jar" todir="${build.dir}/lib" verbose="true"/>
-->
<copy file="${hadoop.root}/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-cli-${commons-cli.version}.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-configuration-1.6.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-lang-2.4.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>
c.修改META-INF/MANIFEST.MF文件中的Bundle-ClassPath修改为:
Bundle-ClassPath: classes/,
lib/hadoop-core.jar,
lib/commons-cli-1.2.jar,
lib/commons-httpclient-3.0.1.jar,
lib/jackson-core-asl-1.8.8.jar,
lib/jackson-mapper-asl-1.8.8.jar,
lib/commons-configuration-1.6.jar,
lib/commons-lang-2.4.jar
然后进入eclipse-plugin目录下执行如下命令即可:
ant -Declipse.home=/usr/eclipse -Dversion=1.0.0
其中:eclipse.home为eclipse解压目录,
version为hadoop版本。
编译成功之后,编译好的eclipse插件为${HADOOP_HOME}/build/contrib目录下的hadoop-eclipse-plugin-1.2.1.jar。如图:
- windows下eclipse中hadoop插件安装
- 将 生 成 的 Eclipse 插 件 hadoop-eclipse-plugin-1.2.1.jar 复 制 到 Eclipse 安 装 目 录 的
plugins 文件夹下, 然后重启 Eclipse。 - 在eclipse菜单栏中依次点击”Window”→”Prefrences”→”Hadoop Map/Reduce”,在右侧设置hadoop安装目录,windows中指定hadoop解压目录即可。
- 进入 Eclipse 后, 按照以下步骤进行设置 : 在菜单栏中依次单击“Window”→“Show
View”→“Other…” , 在对话框中依次单击“MapReduce Tools”→“Map/Reduce Locations“,填入如下图所示信息:
注:host应为hadoop所所在机器的ip地址,应为固定ip,VMware下设置固定ip请参照前面博客。
Advanced Parameters中,指定备份数量为1.
- 此时若hadoop启动状态,则应该可以连接hadoop,在DFS Locations那里,可以依次点开如图:
至此,hadoop插件配置完成。
但是通常不会这么顺利,在此列出一些配置过程中的问题:
1.没有像编译过程中修改文件,则找不到依赖jar
2.Cannot connect to the Map/Reduce location: ubuntu Call to hadoop/192.168.8.8:9001 failed on connection exception: java.net.ConnectException: Connection refused: no further information
此问题解决耗费比较多时间。
解决方法:
1)修改Ubuntu中的hadoop的配置。
将core-site.xml和mapred-site.xml中的主机名改为ip地址,如图:
- 将 生 成 的 Eclipse 插 件 hadoop-eclipse-plugin-1.2.1.jar 复 制 到 Eclipse 安 装 目 录 的
2)重新格式化hdfs:
hadoop namenode -format
start-all.sh
注:此处直接格式化之后会有datanode无法启动的情况,这时删掉hdfs相关data后重新格式化即可,本人删除目录如图:
一般来说,按照如上设置应该差不多,但是不知为什么,本人这里依旧出错,因此再加一步骤
3)修改ubuntu中/etc/hosts文件,如图:
至此,本人这里已经正常连接。
如图:
但是看到其他人还有修改windows用户等过程,此处由于没有遇到相关问题,故不作涉及。