整套大数据学习资料(视频+笔记)百度网盘无门槛下载:http://www.edu360.cn/news/content?id=3377

5.7.2关于JobControl

hadoop 小红牛 7℃ 0评论


MapReduce工作流中的作业不止一个时,问题随之而来:如何管理这些作业按顺序执行?有几种方法,其中主要考虑是否有一个线性的作业链或一 个更复杂的作业有向无环图(directedacyclicgraphDAG)。

对于线性链表,最简单的方法是一个接一个地运行作业,等前一个作业运行结束后再运行下一个:

JobClient.runJob(confl);

]obClient•run]ob(conf2);

如果一个作业失败,run]ob()方法就抛出一个IOException,这样一来,管道中后面的作业就无法执行。根据具体的应用程序,你可能想捕获异常,并清除前一个作业输出的中间数据。①这个一个很有趣的练习。提示:使用8.2.4节介绍的内容。

 

这种方法类似新的MapReduceAPI,除了需要Job上的waitForCompletion()

方法的布尔返回值:true表示作业成功,而false表示失败。

对于比线性链表更复杂的结构,有相关的类库可以帮助你合理安排工作流。它们也适用于线性链表或一次性作业。最简单的是org.apache.hadoop.mapned.jobcontrol包中的DobContnol类。在org • apache .hadoop.mapred.jobcontrol包中也有一个等价的类。]obControl的实例表示一个作业的运行图,你可以加入作业配置,然后告知]obControl实例作业之间的依赖关系。在一个线程中运行DobControl时,它将按照依赖顺序来执行这些作业。也可以査看进程,在作业结束后,可以査询作业的所有状态和每个失败相关的错误信息。如果一个作业失败,IlobControl将不执行与之有依赖关系的后续作业。

转载请注明:全栈大数据 » 5.7.2关于JobControl

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址