提交MapReduce任务时,Ecplise自动生成Jar包

Posted 莫西里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了提交MapReduce任务时,Ecplise自动生成Jar包相关的知识,希望对你有一定的参考价值。

一、介绍

上一届中提到了任务提交到Hadoop集群中的方法,但是最后一节时因为需要将jar包提交给hadoop集群,因此需要用户收到配置一个Export 一个任务的jar包,并在MapReduce任务的Main函数中指定。这里讲如何设置ecplise自动生成一个jar包。需要的工具是ant与ecplise的配合使用

二、详解

1、ant安装

这里下载ant的安装包,下载完成后,将ant解压后的文件放大D盘中,并配置Ant的家目录环境变量:


然后将 D:\\Ant\\bin 目录添加到Path变量中。

2、Ecplise 的配置

(1)将ant的控制面板显示: Window ----> show view -----> other -----> Ant


(2)在已有的项目中创建一个build.xml文件,Export ----> General ----->  Ant BuildFiles ,然后选择我们需要进行自动打包的项目,Finshed后就会发现项目下出现一个Build.xml文件:


这里需要解释的是:ant是一款可以对Java Project进行编译打包的工具,而在这里我们需要对ecplise进行编译(compile)后的项目进行打包,所以我们需要对生成的build.xml文件内容进行修改:

将build.xml文件内容除第一行的声明外全部删除,然后添加以下内容

<project name="jar" default="CreateJar">
	<property name="bindir" value="bin"/>
	<property name="libdir" value="lib"/>
	<property name="classpath" value=".classpath"/>
	<property name="project" value=".project"/>
	<target name="CreateJar">
		<jar destfile="WC.jar" basedir="." includes="$classpath,$project,$libdir/*">
			<fileset dir="$bindir"></fileset>
		</jar>
	</target>
</project>

build.xml文件是一个xml类型的文件,build.xml文件的具体规则可以通过下面这篇文档进行学习:http://blog.csdn.net/ganxunzou/article/details/41174119

因为这里只需要对Project进行打包,所以只用到了jar标签,笔者对ant 编译也是只有一个基础的认识,但是通过这次打包对ant编译有了一个新的认识。

创建完成后,我们在Ant的控制面板中右击 ---->  Add BuildFile ,选中刚才创建的build.xml文件,然后将该文件添加到ant的控制面板中,然后选中该build.xml文件,点击执行,然后就会在项目的目录文件中创建一个jar包:

Buildfile: E:\\Ecplise\\WordCount\\build.xml
CreateJar:
BUILD SUCCESSFUL
Total time: 269 milliseconds
(3)将build.xml文件添加到项目中,并配置项目在每次build之后进行ant 打包

A、选中项目,然后右键  ---->  Properties ----> Bulders ----->Import ----> 选中该项目中的build.xml文件,将该文件添加到项目编译中:


B、然后对该build.xml的编译选项进行配置:在需要的位置中添加ant 编译


这里需要注意的是,这两个选项的顺序必须是固定的,因为我们需要先通过Java Build对项目进行编译,然后通过ant 对项目进行打包,因此顺序不能发生任何变化。


这里需要注意的是,上面的Targets面板中一共有四个选项: After a “Clean”,Manual Build ,Auto Build,During a “Clean” ,通过这四个标签我们在什么时候进行ant打包了,这里主要添加了Manual Build和Auto Build 两个选项中的编译操作,这里的意思是说:当用户进行手动Build 或者 ecplise 自动进行Build时调用Ant 然后对项目进行打包。

(4)开启Ecplise的自动编译:Project ----> Build Automaticlly

打开后,你修改一下某一个字符串以后,然后保存一下就会出现 创建jar成功的提示,并且可以再项目文件夹中发现jar的时间已经更新到了修改的时间。

3、然后在MapReduce的源码中重新设置一下jar包的位置就可以进行任务自动的创建了:

job.setJar("E:\\\\Ecplise\\\\WordCount\\\\WC.jar");

三、总结

如果需要详细的关于ant与ecplise的继承可以查看该篇文章:

http://www.simonwhatley.co.uk/using-ant-with-eclipse


以上是关于提交MapReduce任务时,Ecplise自动生成Jar包的主要内容,如果未能解决你的问题,请参考以下文章

Eclipse远程提交MapReduce任务到Hadoop集群

使用ecplise开发MapReduce

如何通过Java程序提交yarn的MapReduce计算任务

HBase和Mapreduce

通过MapReduce JobID 停止(kill)指定任务

MapReduce任务提交源码分析