使用eclipse编译生成hadoop eclipse开发插件

由于hadoop后来的版本不再直接提供eclipse的开发插件,只提供了源码,所以需要自己动手进行编译,在网上找了一些例子,自己使用起来发现都有些问题,下面根据网上参考的和自己的实践总结如下:

环境:win7 64位系统

hadoop版本:稳定版1.2.1

eclipse版本:4.3

1. 首先是在apache官网上下载1.2.1版本的源码包,然后进行解压

2.使用使用eclipse将源码包中的src/ontrib/eclipse-plugin文件直接导入eclipse环境,eclipse默认将工程识别为MapReduceTools项目





























3.然后建立工程目录下创建lib文件夹,在hadoop包下面或其lib下找到以下几个包:

commons-cli-1.2.jar,

commons-configuration-1.6.jar

commons-httpclient-3.0.1.jar

commons-lang-2.4.jar

hadoop-core-1.2.1.jar

jackson-core-asl-1.8.8.jar

jackson-mapper-asl-1.8.8.jar

然后将这几个包复制到刚建立的lib目录下并导入环境变量中,结构如下图:


4.修改build.xml文件,由于build.xml文件依赖build-contrib.xml,因此为了编译的方便性,将hadoop包下的src\contrib\下的build-contrib.xml拷贝到工程目录下,将build.xml作如下修改:

1>. 修改build-contrib.xml引用目录:

 <import file="build-contrib.xml"/>

如图:


2>.将编译所需要的 hadoop包引入:

<path id="hadoop-jars">
 	 <fileset dir="${hadoop.root}/">
    	<include name="hadoop-*.jar"/>
  	</fileset>
  </path>

如图:


3>.修改打包时copy的包:

	<copy file="${hadoop.root}/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core-1.2.1.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"/>
如图:



5.修改
build-contrib.xml文件

1>.修改hadoop路径并添加eclipse的目录和版本属性

  <property name="hadoop.root" location="F:/hadoop/hadoop-1.2.1/hadoop-1.2.1"/>
  <property name="eclipse.home" location="D:/Program Files/eclipse-standard-kepler-R-win32-x86_64/eclipse" />
  <property name="version" value="1.2.1"/>

如图:



6.需要修改的就这么多,在编译之前还有个地方需要特别注意下,就是要检查一下工程中的META-INF/MANIFEST.MF的Bundle-ClassPath属性是否和lib包下的包对应

如图:



笔者在编译时由于没有注意到这个问题,多次尝试编译出来的插件均不能使用,原因是插件在使用时需要依赖这些包,如果这里没有定义那么打出来的包也将不包含这些配置,就会出现插件里的lib目录下这些包都有,但是程序仍会报出找不到依赖包的异常的现象。


7.OK现在可以使用ant执行一下build.xml文件进行编译了,正常情况下应该能够编译成功了

如图:


编译成功。

此时在hadoop-1.2.1\build\contrib\eclipse-plugin目录下就产生了hadoop-eclipse-plugin-1.2.1.jar包,这个就是hadoop的eclipse插件了,把它copy到eclipse的plugins目录下重启eclipse就会出现MapReduce的视图,就可以使用了



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值