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

来源:互联网 发布:海贼王启航 淘宝号 编辑:程序博客网 时间:2024/04/29 17:29

    从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 })

原创粉丝点击