hadoop自带了eclipse的插件,但是其jar包需要我们自己对其提供的源码进行编译,在hadoop的src/contrib/目录下可以看到eclipse-plugin文件夹,此中包含的即是我们所需要的eclipse插件的源码工程,如下图:
1.eclipse-plugin——MapReduceTool编译
1)打开eclipse软件,导入“hadoop-1.2.1\src\contrib\eclipse-plugin”中的工程。
2)导入工程后,会有java build path相关的错误,我们右击“MapReduceTool工程”在properties中找到java build path,我们可看到在libraries中的hadoop-core.jar在”./lib”目录下找不到,我们在工程中创建lib目录,同时将hadoop-1.2.1目录下的hadoop-core-1.2.1.jar拷贝到lib目录下,同时改名为hadoop-core.jar。
3)hadoop eclipse插件采用的是ANT进行打包编译,hadoop为我们编写好了ANT编译所需环境的配置代码,我们需要将“hadoop-1.2.1\src\contrib\bulid_contrib.xml”文件复制到工程根目录下即可。
下图是eclipse插件树形结构图:
4)修改ant编译配置文件”build.xml”、“build-contrib.xml”
① 在build-contrib.xml中添加hadoop目录属性、eclipse目录属性和版本号,添加代码如下:
<property name="hadoop.root" location="C:\Workspace\JAVA\hadoop-1.2.1\hadoop-1.2.1"/>
<property name="eclipse.home" location="C:\Program Files (x86)\eclipse-jee-mars-2-win32\eclipse"/>
<property name="version" value="1.2.1"/>
② 修改build.xml
<!--修改"../build-contrib.xml"为"build-contrib.xml"-->
<import file="../build-contrib.xml" />
↓
<import file="build-contrib.xml" />
<!--添加如下代码-->
<path id="hadoop-jars">
<fileset dir="${hadoop.root}">
<include name="hadoop-*.jar" />
</fileset>
</path>
<path id="classpath">
<pathelement location="${build.classes}" />
<pathelement location="${hadoop.root}/build/classes" />
<path refid="eclipse-sdk-jars" />
<!--添加如下代码-->
<path refid="hadoop-jars" />
</path>
<target name="jar" depends="compile" unless="skip.contrib">
<mkdir dir="${build.dir}/lib" />
<!-- 将文件原有的下面这两行代码注释掉,添加下面7行代码 -->
<!--
<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-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>
build.xml文件修改完后如下图:
5)修改“MANIFEST.MF”文件
修改属性:
Bundle-ClassPath: classes/,
lib/hadoop-core.jar
为:
Bundle-ClassPath: classes/,
lib/hadoop-core.jar,
lib/
如下图:
6)添加ANT编译器
工程右键->Properties,打开Properties对话框,在Builders中添加ANT编译器,如下图:
7)选中项目,点击”Project->Build Project”对工程进行编译,编译成功如下图:
从编译结果中可以看到我们所需要的插件jar包为“C:\Workspace\JAVA\hadoop-1.2.1\hadoop-1.2.1\build\contrib\eclipse-plugin\hadoop-eclipse-plugin-1.2.1.jar”。
2.eclipse插件安装
将上面编译好的hadoop-eclipse-plugin-1.2.1.jar放入到”eclipse\plugin”目录下,重启eclipse即可
3.eclipse插件使用
1)打开MapReduce Tools View视图
在Window —> Show View —> Other 找到Map/Reduce Locations,选中打开即可,如下图:
插件视图如下:
2)点击“大象”,弹出hadoop location对话框,填入服务器的相关信息即可,如下图:
4.eclipse插件编译使用中的问题
1)build工程时报“com.sun.tools.javac.Main is not on the classpath.”错误
错误内容如下:
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to “C:\Program Files (x86)\Java\jre1.8.0_66”
这个错误解决需要如下两步:
a.JAVA_HOME没配置,在环境变量中配置JAVA_HOME为“C:\Program Files (x86)\Java\jdk1.8.0_66”即可
b.将“C:\Program Files (x86)\Java\jdk1.8.0_66\lib”中的tools.lib拷贝到”C:\Program Files (x86)\Java\jre1.8.0_66\lib”中即可