我的Hadoop版本为1.2.1,Ubuntu 12
一,步骤
1, 在$HADOOP_HOME\src\contrib\eclipse-plugin\build.xml,做如下修改
<path id="hadoop-core-jar">
<fileset dir="${hadoop.root}/">
<include name="hadoop*.jar"/>
</fileset>
</path>
<!-- Override classpath to include Eclipse SDK jars -->
<path id="classpath">
<pathelement location="${build.classes}"/>
<pathelement location="${hadoop.root}/build/classes"/>
<path refid="eclipse-sdk-jars"/>
<path refid="hadoop-core-jar"/>
</path>
......
<target name="jar" depends="compile" unless="skip.contrib">
<mkdir dir="${build.dir}/lib"/>
<copy file="${hadoop.root}/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-cli-1.2.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/commons-configuration-1.6.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"/>
<copy file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" todir="${build.dir}/lib" verbose="true"/>
<jar
jarfile="${build.dir}/hadoop-${name}-${version}.jar"
manifest="${root}/META-INF/MANIFEST.MF">
<fileset dir="${build.dir}" includes="classes/ lib/"/>
<fileset dir="${root}" includes="resources/ plugin.xml"/>
</jar>
</target>
2. 在$HADOOP_HOME\src\contrib\build-contrib.xml,添加以下几行:
<property name="version" value="1.2.1"/> <property name="ivy.version" value="2.1.0"/> <property name="eclipse.home" location="/usr/software/eclipse"/> <!-- 填eclipse所在目录 -->
3, 打开命令行,进入目录$HADOOP_HOME\src\contrib\eclipse-plugin,输入ant编译,如果一切正常就编译通过了。
最后可以在{hadoophome}\build\contrib\eclipse-plugin路径下找到编译好的插件。把这个插件拷贝到eclipse\plugins里,重启eclipse即可。
二,遇到的问题,编译倒是都过了
1. 在Map/Reduce Location中,点击new或edit没反应。
解决办法:先前我在src\contrib\eclipse-plugin\build.xml里的copy file里的version写的参数,后来我对着目录把版本号写死,即上面那样,再编译一次,OK,那两个按钮有反应了。
2.An internal error occurred during: "Connecting to DFS XXX
连不上DFS。
解决办法:网上说是插件的lib目录里少了jar包,我打开我的一看,不少啊,正如上面配置文件里的那样。后来我打开插件的META-INF\MANIFEST.MF,文件,发现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的plugins目录,打开eclipse,这次OK了,能连接DFS了