一个MapReuce作业的从开始到结束--第6章Hadoop以Jar包的方式执行MapReduce任务

原创
2017/01/17 09:22
阅读数 42

    从bin/hadoop脚本可知,Hadoop运行Jar包执行MapReduce任务的类是org.apache.hadoop.util.RunJar,其源代码在core/org/apache/hadoop/util/RunJar.java



执行一个Jar包,其本质就是,把Jar解压缩到一个临时目录,以反射的方式获取main函数,然后执行。



[1]. 执行RunJar类的main函数。

[2]. 获取manifest:Manifest manifest = jarFile.getManifest()

[3]. 获取要执行的类:mainClassName

[4]. 创建workDir

[5]. jar文件解压缩到wordDir:unJar(file, workDir)

[6]. 以反射的方式获取main函数:

Method main =mainClass.getMethod("main", new Class[] {

Array.newInstance(String.class,0).getClass()

});

[7].执行main函数:main.invoke(null,new Object[] { newArgs })

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部