JobControl : 在实际场景中,作业可能比较复杂,相互之间存在依赖关系,这些作业构成有向图(DAG),jobControl可以实现作业间的调度关系。
主要通过addDepending()方法来设置作业间的依赖关系。
设计原理:
JobControl由两个类组成:Job 和 Jobcontrol 。
Job类 :封装了一个MR作业及其对应的依赖关系,主要负责监控各个依赖作业的运行状态以改变自己的状态。
状态: waiting , ready , running ,sucess or failed
Jobcontrol类 : 封装了一系列MR作业及其对应的依赖关系。将处于不同状态的作业放入不同的哈希表中,并按照上面的状态转移作业。在实现时,有一个线程周期行的监控和更新状态。