hadoop jar xxxx.jar的流程

转载 2013年12月02日 17:23:22


转自:http://hi.baidu.com/dt_zhangwei/item/a58239fb46f3f110d7ff8cbf

搞清楚 hadoop jar xxxx.jar 执行的流程: jar文件是如何分发的


JobClient(不一定是hadoop集群的节点)利用bin/hadoop脚本运行jar包,以hadoop-0.20.2-examples.jar为例子:
hadoop jar hadoop-0.20.2-examples.jar [class name]的实质是:
1.利用hadoop这个脚本启动一个jvm进程;
2.jvm进程去运行org.apache.hadoop.util.RunJar这个java类;
3.org.apache.hadoop.util.RunJar解压hadoop-0.20.2-examples.jar到hadoop.tmp.dir/hadoop-unjar*/目录下;
4.org.apache.hadoop.util.RunJar动态的加载并运行Main-Class或指定的Class;
5.Main-Class或指定的Class中设定Job的各项属性
6.提交job到JobTracker上并监视运行情况。

注意:以上都是在jobClient上执行的。

运行jar文件的时候,jar会被解压到hadoop.tmp.dir/hadoop-unjar*/目录下(如:/home/hadoop/hadoop-fs/dfs/temp/hadoop- unjar693919842639653083, 注意:这个目录是JobClient的目录,不是JobTracker的目录)。解压后的文件为:
drwxr-xr-x 2 hadoop hadoop 4096 Jul 30 15:40 META-INF
drwxr-xr-x 3 hadoop hadoop 4096 Jul 30 15:40 org
有图有真相:


提交job的实质是:
生成${job-id}/job.xml文件到hdfs://${mapred.system.dir}/(比如hdfs://bcn152:9990/home/hadoop/hadoop-fs/dfs/temp/mapred/system/job_201007301137_0012/job.xml),job的描述包括jar文件的路径map|reduce类路径等等.
上传${job-id}/job.jar文件到hdfs://${mapred.system.dir}/(比如hdfs://bcn152:9990/home/hadoop/hadoop-fs/dfs/temp/mapred/system/job_201007301137_0012/job.jar)
有图有真相:


生成job之后,通过static JobClient.runJob()就会向jobTracker提交job:
JobClient jc = new JobClient(job);
RunningJob rj = jc.submitJob(job);
之后JobTracker就会调度此job,

提交job之后,使用下面的代码获取job的进度:
    try {
      if (!jc.monitorAndPrintJob(job, rj)) {
        throw new IOException("Job failed!");
      }
    } catch (InterruptedException ie) {
      Thread.currentThread().interrupt();
    }

相关文章推荐

hadoop jar xxxx.jar 执行的流程

搞清楚 hadoop jar xxxx.jar 执行的流程: jar文件是如何分发的 JobClient(不一定是hadoop集群的节点)利用bin/hadoop脚本运行jar包,以hadoop...

hadoop执行jar流程分析

项目要结束了,最近在整理项目的相关文档,之前项目中在用hadoop jar **.jar提交作业时,设置了些公共依赖jar包到CLASSPATH中,这样算子在打包时就不需要把很多jar包再打进去离开 ...

SSH项目搭建图文流程,附整合jar包下载地址

本文使用图文方式,详述了SSH整合过程,并附带整合包下载地址,笔者亲测,绝不冲突...

Not a host:port pair: PBUF(用Java客户端(Eclipse平台)连接Hbase)&&apache官网Jar下载流程

Not a host:port pair: PBUF(用Java客户端(Eclipse平台)连接Hbase)&&apache官网Jar下载流程...

Android中,Dalvik检查和优化.apk/.jar的流程introduce

dalvik的目标平台是Android这样的小RAM,低速度flash memory,运行标准Linux系统的设备。针对这样的平台特性,要想做到更好,我们需要考虑以下几点: 1、为了减少系统的内存使用...

导入Maven Project项目获取jar包的流程 seeting配置

导入一个 Maven Project项目(前提要装好Maven管理工具,配置localRepo为本地仓库) 首先 该项目会自动从localRepo(本地仓库)里查找pom.xml里所需要的jar包 若...

hadoop作业引用第三方jar文件

编写mapreduce程序,习惯用eclipse,可以利用hadoop插件,引用第三方jar文件,然后直接run on hadoop即可,很方便。当然插件和eclipse的版本要匹配,不然总是loca...

Ubuntu12.04上编译hadoop-eclipse-plugin-1.0.4.jar包

1、在Eclipse中选择File-->Import-->Existing Projects into Workspace导入已有项目,假设路径为: $HADOOP_HOME/src/contr...

Mac系统下执行hadoop jar 运行在某包内的程序 提示java.lang.ClassNotFoundException的解决方法

背景       最近在写MapReduce程序时,一直在用IDE,发现编译器执行的程序,无论成功还是失败,在http://master:8088/上看不到记录,于是想不靠IDE手动编译运行一下程序,...
  • wk51920
  • wk51920
  • 2016年06月17日 10:26
  • 390

hadoop工作流引擎解压jar文件,并运行出现类型不匹配的情况

在做hadoop工作流引擎项目开发的时候,编写某些特定的Mapreduce程序,虽然该程序在hadoop平台型运行正常,但在工作流引擎中运行却出现错误,主要的原因是该工作流引擎是提取jar中的Mapp...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hadoop jar xxxx.jar的流程
举报原因:
原因补充:

(最多只允许输入30个字)