一、准备工作:
1、安装JDK
![26185205-1f5850ff2396482599d58e0bcd54a4e4.png](https://i-blog.csdnimg.cn/blog_migrate/ec95a2dc1a284ce803e790e17645e1b1.png)
JDK6,JDK7都可以。这里以jdk-7u40-windows-x64.exe为例。
安装完成后要设置环境变量。
在Path变量的变量值后添加:【;C:\Program Files\Java\jdk1.7.0_40\bin】(JDK安装目录下的bin目录,注意半角分号)
![26185205-b606c7eaa2f24a2d8239c39d5223bfe9.png](https://i-blog.csdnimg.cn/blog_migrate/ef3c22139f93bf62685856a3bf24e2e7.png)
添加JAVA_HOME变量,变量值为【C:\Program Files\Java\jdk1.7.0_40】(JDK安装目录)
![26185206-3617634967484e5ca23962b2116c2332.png](https://i-blog.csdnimg.cn/blog_migrate/94d7b97742064881ad2888c361e3816b.png)
如果不设置好环境变量,ANT将无法运行
2、安装Ant
这里以apache-ant-1.9.2-bin.tar.gz为例。
将压缩包解压到D盘根目录下。(其他目录也可以,不过要更改后面文件和命令中的参数)
3、解压Hadoop
这里以hadoop-1.2.1.tar.gz为例。
将压缩包解压到D盘根目录下。(其他目录也可以,不过要更改后面文件和命令中的参数)
4、安装Eclipse
这里以eclipse-standard-luna-M2-win32-x86_64.zip为例。
将压缩包解压到E:\GreenSoft\DevelopmentSoft中。(其他目录也可以,不过要更改后面文件和命令中的参数)
二、修改配置文件
1、进入D:\hadoop-1.2.1\src\contrib
![26185207-402033e5cf6248b180ad377a373ba467.jpg](https://i-blog.csdnimg.cn/blog_migrate/2f0dfd939a5d8c791297a157c7012834.jpeg)
2、备份build.properties和build.xml以及META-INF目录下的MANIFEST.MF共3个文件
3、修改build.properties配置文件
在最后添加Eclipse安装目录参数eclipse.home,hadoop版本参数version,jackson-core-asl.version,jackson-mapper-asl.version。jackson-core-asl-*.jar与jackson-mapper-asl-*.jar可在Hadoop安装目录的lib文件夹下找到。
注意:eclipse.home参数中路径写正斜杠/,而不是Windows默认的反斜杠\,否则有可能提示找不到文件。
output.. = bin/
bin.includes = META-INF/,\
plugin.xml,\
resources/,\
classes/,\
classes/,\
lib/
#需定义的参数
eclipse.home=E:/GreenSoft/DevelopmentSoft/eclipse
version=1.2.1
jackson-core-asl.version=1.8.8
jackson-mapper-asl.version=1.8.8
4、修改build.xml配置文件
因为没有编译过整个Hadoop项目,所以Hadoop安装目录下的build目录中没有所需的jar文件。因此要手工修改编译所涉及的jar文件为Hadoop安装目录及其lib子目录下中的一共7个jar文件
(1)、设置elipse-sdk-jar path中也包含hadoop安装目录的jar文件。
![26185207-e1ac14d6b3114d19b3bbd53263597001.png](https://i-blog.csdnimg.cn/blog_migrate/950da9742f5f3c820d4f7c35df6a4bd0.png)
<path id="eclipse-sdk-jars">
<fileset dir="${eclipse.home}/plugins/">
<include name="org.eclipse.ui*.jar"/>
<include name="org.eclipse.jdt*.jar"/>
<include name="org.eclipse.core*.jar"/>
<include name="org.eclipse.equinox*.jar"/>
<include name="org.eclipse.debug*.jar"/>
<include name="org.eclipse.osgi*.jar"/>
<include name="org.eclipse.swt*.jar"/>
<include name="org.eclipse.jface*.jar"/>
<include name="org.eclipse.team.cvs.ssh2*.jar"/>
<include name="com.jcraft.jsch*.jar"/>
</fileset>
<!-- 指定使用$HADOOP_HOME总的jar文件 -->
<fileset dir="${hadoop.root}">
<include name="hadoop-*.jar"/>
</fileset>
</path>
(2)、修改copy的jar文件路径
![26185210-200e6e16d4914c6189137e4136c1bd11.png](https://i-blog.csdnimg.cn/blog_migrate/880ba88c62073dfb19bd9e67a547781e.png)
<!-- Override jar target to specify manifest -->
<target name="jar" depends="compile" unless="skip.contrib">
<mkdir dir="${build.dir}/lib"/>
<!-- 设置正确的所有jar文件复制 -->
<!--
<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-${commons-configuration.version}.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-httpclient-${commons-httpclient.version}.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/commons-lang-${commons-lang.version}.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-core-asl-${jackson-core-asl.version}.jar" todir="${build.dir}/lib" verbose="true"/>
<copy file="${hadoop.root}/lib/jackson-mapper-asl-${jackson-mapper-asl.version}.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>
4、修改MANIFEST.MF配置文件。
修改CLASSPATH,注意CLASSPATH中的每项都要以空格+逗号分隔,没有空格会报错。
注意jar文件的版本号,这里以hadoop-1.2.1为例。
![26185211-6b5a506bffc44f4187971b0f60213222.png](https://i-blog.csdnimg.cn/blog_migrate/6131e25fb4eaa85f17871785b860e9b5.png)
Eclipse-LazyStart: true
Bundle-ClassPath:
classes/,
lib/hadoop-core.jar,
lib/commons-cli-1.2.jar,
lib/commons-configuration-1.6.jar,
lib/commons-httpclient-3.0.1.jar,
lib/commons-lang-2.4.jar,
lib/jackson-core-asl-1.8.8.jar,
lib/jackson-mapper-asl-1.8.8.jar
Bundle-Vendor: Apache Hadoop
三、使用ANT编译插件
在Powershell中运行一下命令:
cd D:\hadoop-1.2.1\src\contrib\eclipse-plugin
D:\apache-ant-1.9.2\bin\ant.bat
(在CMD中运行的话需要注意可能要手工切换磁盘)
![26185217-a36569fe9e034161a3a6a2b26bc2a3ef.png](https://i-blog.csdnimg.cn/blog_migrate/f53f81225e1617202948e0a255b61d7b.png)
![26185219-3b1ff79cf8974cf4a4a2b001feac8321.png](https://i-blog.csdnimg.cn/blog_migrate/84594fa19bf28ae9ddaec7ca9b261a25.png)
到此编译成功。
四、复制插件到Eclipse插件目录
编译生成的插件在D:\hadoop-1.2.1\build\contrib\eclipse-plugin(Hadoop安装目录的build\contrib\eclipse-plugin目录中)。
![26185220-217f222ea0fa452fbfaa0eaae1c04a9f.png](https://i-blog.csdnimg.cn/blog_migrate/c2302368d8f513404ba989a19022fbe1.png)
只需要将hadoop-eclipse-plugin-*.jar文件拷贝到Eclipse安装目录的plugins文件夹中即可。
![26185221-d033157be5f94d4ca43042250041a70b.png](https://i-blog.csdnimg.cn/blog_migrate/a9c7c2492eab3c17b95b1f01edeefab4.png)
重启Eclipse就有Map/Reduce Perspective了。
![26185221-b208d0242f3040ccb384cd9e169e4c8a.png](https://i-blog.csdnimg.cn/blog_migrate/fc795798f9349547d623e14c1ec0239a.png)
参考资料:
Hadoop 1.2.1 eclipse plugin 编译 win7 集成 http://blog.csdn.net/reaper1022/article/details/11009797
hadoop-eclipse开发环境搭建及error: failure to login错误 http://blog.csdn.net/chengfei112233/article/details/7252404
MANIFEST.MF文件的Class-Path http://lost-alien.iteye.com/blog/646371