搞清楚 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 执行的流程相关推荐

  1. 理论+实践轻松掌握nohup java -jar xxxx.jar /dev/null 21 意义

    前言 相信大家经常能在shell脚本中发现>/dev/null 2>&1这样的语句.以前的我并没有去深入地理解这段命令的作用,照搬照用,直到上周我将这段命令不小心写成了2>& ...

  2. 运行java -jar xxxx.jar 报ConfigServletWebServerApplicationContext : Exception encountered during contex

    在远程服务器运行java -jar xxxx.jar 报ConfigServletWebServerApplicationContext : Exception encountered during ...

  3. maven install后,java -jar XXXX.jar运行---找不到主类问题 以及 虚拟机中执行jar包后 访问页面出现Java heap space等其他问题

    这是前几天遇到的问题了,当天晚上想写下来来着,后来有事情就一直搁置到现在了. 由于我想将SpringCloud项目都导出jar包在虚拟机上运行,然后本地访问,所以先将SpringCloud中的注册中心 ...

  4. Java项目打成Jar包后执行Jar包指定方法

    最近在考虑跳个槽的问题,也看了几个面试,其中有一个面试让我本地写一个蛇形矩阵,打成Jar包,并且可以使用java -jar 命令启动,本人基础不太牢固,这个问题我找了半天才找到解决的办法,面试题答完直 ...

  5. linux hadoop 运行jar,Linux下执行Hadoop WordCount.jar

    Linux执行 Hadoop WordCount Ubuntu 终端进入快捷键 :ctrl + Alt +t hadoop启动命令:start-all.sh 正常执行效果如下: hadoop@HADO ...

  6. java jar 启动项目,SpringBoot项目运行jar包启动的步骤流程解析

    SpringBoot项目在开发中,方便快捷,有一点原因就是SpringBoot项目可以打jar包运行:把jar包直接扔服务器上,然后运行jar包就能访问项目接口了.下面介绍SpringBoot项目打j ...

  7. linux 测试环境启用jar_Linux下用java -jar运行可执行jar包的方法教程

    问题来源 一般来说,一个稍微大些的项目都会有一些依赖的Jar包,而在将项目部署到服务器的过程中,如果没有持续集成环境的话,也就是说服务器不支持在线编译及打包,那么需要自己上传依赖的Jar包,然而可能服 ...

  8. java动态加载jar文件并执行方法

    在项目开发的过程中,有时候需要动态灵活的加载某个jar包并执行里面的方法的时候,我们可以使用本篇文章写得方式去动态的加载jar包而不用使用原始方式引入jar包作为lib去使用,接下来介绍如何动态加载j ...

  9. 执行 java -jar xxx.jar 是不是创建进程问题

    执行 package test;public classmymain {public static void main(String[] args) {// TODO Auto-generated m ...

最新文章

  1. 为什么python注释不能中文_python中输入中文注释是无法编译
  2. 用iPhone给林徽因拍照会是啥样?这款“穿越相机”把老照片换成现代风
  3. Seq2Seq+前缀树:检索任务新范式(以KgCLUE为例)
  4. GM6 1.38.1 start up debug - share memory
  5. Java注解实现之how to use path variable @PathVariable
  6. java socket 对方关闭_java Socket判断对方是否已关闭连接
  7. c/c++整理--c++面向对象(3)
  8. python 运维包_基础入门_Python-模块和包.运维开发中__import__动态导入最佳实践?
  9. 哈尔滨举办冰雪动漫节 coser演绎《王者荣耀》英雄
  10. JAVA实现EXCEL公式专题(七)——统计函数
  11. 自动换挡型数字频率计
  12. 北京林业大学本科毕业论文答辩和论文选题PPT模板
  13. 【第一组】第十六次冲刺例会纪要
  14. 一文读懂 Kafka 事务机制
  15. day02-Java基础语法以及IDLE的安装和使用
  16. win10 + Ubuntu 18.04.1 LTS (Bionic Beaver) 双系统的安装配置
  17. NGINX中如何根据客户端IP地址控制访问
  18. 一般的计算机辐射有危害吗,电脑辐射有什么危害怎么防止 电脑辐射的范围是多少...
  19. 草莓柿子文案:草莓柿子水果店文案,草莓柿子水果朋友圈文案
  20. 【快速入门】华为交换机eNSP简单配置(附缩写总结)

热门文章

  1. 一些你可能不知道的Flash XSS技巧
  2. bzoj 1171: 大sz的游戏, bzoj 2892: 强袭作战
  3. Warpaffine
  4. 微信朋友圈广告怎么做?
  5. IOS端K线系列之K线-绘制蜡烛图
  6. 7.Markdown图片
  7. 英语单词: entropy;熵
  8. 可视化篇:Echarts2.0引入百度地图
  9. 数据库修改表中的数据(SqlServer)
  10. 一文概览神经网络优化算法