hadoop jar xxxx.jar 执行的流程
搞清楚 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 执行的流程相关推荐
- 理论+实践轻松掌握nohup java -jar xxxx.jar /dev/null 21 意义
前言 相信大家经常能在shell脚本中发现>/dev/null 2>&1这样的语句.以前的我并没有去深入地理解这段命令的作用,照搬照用,直到上周我将这段命令不小心写成了2>& ...
- 运行java -jar xxxx.jar 报ConfigServletWebServerApplicationContext : Exception encountered during contex
在远程服务器运行java -jar xxxx.jar 报ConfigServletWebServerApplicationContext : Exception encountered during ...
- maven install后,java -jar XXXX.jar运行---找不到主类问题 以及 虚拟机中执行jar包后 访问页面出现Java heap space等其他问题
这是前几天遇到的问题了,当天晚上想写下来来着,后来有事情就一直搁置到现在了. 由于我想将SpringCloud项目都导出jar包在虚拟机上运行,然后本地访问,所以先将SpringCloud中的注册中心 ...
- Java项目打成Jar包后执行Jar包指定方法
最近在考虑跳个槽的问题,也看了几个面试,其中有一个面试让我本地写一个蛇形矩阵,打成Jar包,并且可以使用java -jar 命令启动,本人基础不太牢固,这个问题我找了半天才找到解决的办法,面试题答完直 ...
- linux hadoop 运行jar,Linux下执行Hadoop WordCount.jar
Linux执行 Hadoop WordCount Ubuntu 终端进入快捷键 :ctrl + Alt +t hadoop启动命令:start-all.sh 正常执行效果如下: hadoop@HADO ...
- java jar 启动项目,SpringBoot项目运行jar包启动的步骤流程解析
SpringBoot项目在开发中,方便快捷,有一点原因就是SpringBoot项目可以打jar包运行:把jar包直接扔服务器上,然后运行jar包就能访问项目接口了.下面介绍SpringBoot项目打j ...
- linux 测试环境启用jar_Linux下用java -jar运行可执行jar包的方法教程
问题来源 一般来说,一个稍微大些的项目都会有一些依赖的Jar包,而在将项目部署到服务器的过程中,如果没有持续集成环境的话,也就是说服务器不支持在线编译及打包,那么需要自己上传依赖的Jar包,然而可能服 ...
- java动态加载jar文件并执行方法
在项目开发的过程中,有时候需要动态灵活的加载某个jar包并执行里面的方法的时候,我们可以使用本篇文章写得方式去动态的加载jar包而不用使用原始方式引入jar包作为lib去使用,接下来介绍如何动态加载j ...
- 执行 java -jar xxx.jar 是不是创建进程问题
执行 package test;public classmymain {public static void main(String[] args) {// TODO Auto-generated m ...
最新文章
- 为什么python注释不能中文_python中输入中文注释是无法编译
- 用iPhone给林徽因拍照会是啥样?这款“穿越相机”把老照片换成现代风
- Seq2Seq+前缀树:检索任务新范式(以KgCLUE为例)
- GM6 1.38.1 start up debug - share memory
- Java注解实现之how to use path variable @PathVariable
- java socket 对方关闭_java Socket判断对方是否已关闭连接
- c/c++整理--c++面向对象(3)
- python 运维包_基础入门_Python-模块和包.运维开发中__import__动态导入最佳实践?
- 哈尔滨举办冰雪动漫节 coser演绎《王者荣耀》英雄
- JAVA实现EXCEL公式专题(七)——统计函数
- 自动换挡型数字频率计
- 北京林业大学本科毕业论文答辩和论文选题PPT模板
- 【第一组】第十六次冲刺例会纪要
- 一文读懂 Kafka 事务机制
- day02-Java基础语法以及IDLE的安装和使用
- win10 + Ubuntu 18.04.1 LTS (Bionic Beaver) 双系统的安装配置
- NGINX中如何根据客户端IP地址控制访问
- 一般的计算机辐射有危害吗,电脑辐射有什么危害怎么防止 电脑辐射的范围是多少...
- 草莓柿子文案:草莓柿子水果店文案,草莓柿子水果朋友圈文案
- 【快速入门】华为交换机eNSP简单配置(附缩写总结)