多个MapReduce功课相互依赖时,使用JobControl进行管理
多个MapReduce作业相互依赖时,使用JobControl进行管理
要处理复杂关系的数据,一个工程里面绝对不止一个MapReduce作业,当有多个MapReduce作业时, 并且每个作业之间有依赖关系,所谓的依赖就是一个作业得到的结果是另外一个作业的输入,这个时候我们可 以使用JobControl吊用其中的的addDepending()方法,管理每个MapReduce工作间的依赖关系,具体的 示例如下:
step1:
//设置各个Configuration Configuration Aconf = new Configuration(); Configuration Bconf = new Configuration(); Configuration Cconf = new Configuration(); Configuration Dconf = new Configuration();
step2:
//创建job对象,需要注意的是JobControl要求作业必须封装成job对象 Job Ajob = new Job(Aconf); Job Bjob = new Job(Bconf); Job Cjob = new Job(Cconf); Job Djob = new Job(Dconf);
step3:
//设置依赖关系,构造一个DAG作业 Bjob.addDepending(Ajob); Cjob.addDepending(Ajob); Djob.addDepending(Bjob); Djob.addDepending(Cjob);
step4:
//创建JobControl对象,由他对作业进行监控和调度 JobControl JC = new JobControl("Native Bayes");
step5:
//把四个作业添加到JobControl中 JC.addJob(Ajob); JC.addJob(Bjob); JC.addJob(Cjob); JC.addJob(Djob);
step6:
//提交DAG作业 JC.run();
在实际运行过程中,不依赖于其他任何作业的Ajob会优先得到调度,一旦运行完成,Bjob,Cjob两个作业同 时被调度,待他们全部运行完成后Djob被调用,参看上面的依赖的顺序!!!