首先,在自己写的MR程序中通过org.apache.hadoop.mapreduce.Job来创建Job。配置好之后通过waitForCompletion方法来提交Job并打印MR执行过程的log。Hadoop版本是1.0.0。

public boolean waitForCompletion(boolean verbose

) throws IOException, InterruptedException, ClassNotFoundException {

if (state == JobState.DEFINE) {

submit();    //一

}

if (verbose) {

jobClient.monitorAndPrintJob(conf, info); //二

} else {

info.waitForCompletion(); //三

}

return isSuccessful();  //四

}

我们将waitForCompletion分成四步来讲解。

一、在判断状态state可以提交Job后,执行submit()方法。

Submit方法首先是确保当前的Job的状态是处于DEFINE,否则不能提交Job。然后启用新的API,即org.apache.hadoop.mapreduce下的Mapper和Reducer,这一点会在后面的MapTask和ReduceTask中觉得是否使用mapreduce包下的新API或者是mapred包下的旧API,这里默认已经使用新的了。

Connect方法会产生一个JobClient实例,用来和JobTracker通信。

jobClient.submitJobInternal(conf)用来:

1、链接JobTracker获取JobID

2、提交作业jar文件

3、提交分片信息splits

4、提交job.xml配置文件

5、提交Job

上述五步中的2~4可以看做一个过程就是向HDFS上传作业资源。由于比较

麻烦,后续会再讲提交过程。

jobClient.submitJobInternal(conf)会返回一个RunningJob—info,这个info一般是org.apache.hadoop.mapred. NetworkedJob的实例,NetworkedJob实现了RunningJob接口,可以用来跟踪作业的执行进度等一些统计信息。

提交给JobTracker后,就将作业状态调整为RUUNING,表示该作业正在被调度运行。

二、jobClient.monitorAndPrintJob(conf, info)会不断的刷新获取job运行的进度信息,并打印。waitForCompletion方法的boolean参数verbose为true表明要打印运行进度,为false就只是等待job运行结束,不打印运行日志。

三、坐等Job运行完毕,不打印日志。

四、返回作业成功与否

大体的流程比较简单,但是实际的运行过程非常复杂,不知道后面的还能不能写出来(好些东西还不清楚)。。。。代码量比较大。以此做笔记,便于和大伙交流并记忆。

有问题欢迎交流留言哈!

最新文章

  1. javascript opacity兼容性随笔
  2. Sticker.js – 帮助你在网站中加入贴纸效果
  3. maven学习讲解
  4. 安卓手机开机开启指定Activity
  5. C#之使用随机数
  6. HDU 3335 Divisibility dancing links 重复覆盖
  7. int([x[, base]]) : 将一个字符转换为int类型,base表示进制
  8. 在不同编译环境中如何使用sleep()函数
  9. Python+Django+SAE系列教程15-----输出非HTML内容(图片/PDF)
  10. Java设计模式菜鸟系列(十四)代理模式建模与实现
  11. IS动态左侧菜单-01
  12. Maven手动增加依赖jar到本地Maven仓库中
  13. Runtime of Objective-C
  14. 数据结构(C语言版)顺序表相关算法代码实现
  15. sqlserver常用sql语句,更改字段,建立唯一键,多个字段去重复等
  16. [转载] Java NIO教程
  17. Linux scp sudo
  18. 微信小程序是怎么运行的?
  19. DTCC2019第十届中国数据库技术大会将于5月在北京召开
  20. trace文件解读

热门文章

  1. 预备作业02:成功经验与C语调查20155230
  2. iOS程序中调用系统自带应用(短信,邮件,浏览器,地图,appstore,拨打电话,iTunes,iBooks )
  3. 启动图实现:UIScrollView+UIPageControl简单实现
  4. Web fonts
  5. [USACO2005][POJ3045]Cow Acrobats(贪心)
  6. DOM(三)使用DOM + Css
  7. iOS -- 生成有logo的二维码
  8. 每天一个linux命令(11):less 命令
  9. “耐撕”团队 2016.04.08 站立会议
  10. HTML布局篇之双飞翼(圣杯)布局