Hadoop使用JobControl设置job之间的依赖关系

JobControl 编程实例:


一个完整的贝叶斯分类算法可能需要4 个有依赖关系的MapReduce 作业完成,传统的做法是:为每个作业创建相应的JobConf 对象,并按照依赖关系依次(串行)提交各个作业,如下所示:
// 为4 个作业分别创建JobConf 对象
JobConf extractJobConf = new JobConf(ExtractJob.class);
JobConf classPriorJobConf = new JobConf(ClassPriorJob.class);
JobConf conditionalProbilityJobConf = new JobConf(ConditionalProbilityJob.class);
JobConf predictJobConf = new JobConf(PredictJob.class);
...// 配置各个JobConf
// 按照依赖关系依次提交作业
JobClient.runJob(extractJobConf);
JobClient.runJob(classPriorJobConf);
JobClient.runJob(conditionalProbilityJobConf);

JobClient.runJob(predictJobConf);


如果使用JobControl,则用户只需使用addDepending() 函数添加作业依赖关系接口,JobControl 会按照依赖关系调度各个作业,具体代码如下:
Configuration extractJobConf = new Configuration();
Configuration classPriorJobConf = new Configuration();
Configuration conditionalProbilityJobConf = new Configuration();
Configuration predictJobConf = new Configuration();
...// 设置各个Configuration
// 创建Job 对象。注意,JobControl 要求作业必须封装成Job 对象
Job extractJob = new Job(extractJobConf);
Job classPriorJob = new Job(classPriorJobConf);
Job conditionalProbilityJob = new Job(conditionalProbilityJobConf);
Job predictJob = new Job(predictJobConf);
// 设置依赖关系,构造一个DAG 作业
classPriorJob.addDepending(extractJob);
conditionalProbilityJob.addDepending(extractJob);
predictJob.addDepending(classPriorJob);
predictJob.addDepending(conditionalProbilityJob);
// 创建JobControl 对象,由它对作业进行监控和调度
JobControl JC = new JobControl("Native Bayes");
JC.addJob(extractJob);// 把4 个作业加入JobControl 中
JC.addJob(classPriorJob);
JC.addJob(conditionalProbilityJob);
JC.addJob(predictJob);
JC.run(); // 提交DAG 作业

在实际运行过程中,不依赖于其他任何作业的extractJob 会优先得到调度,一旦运行完成,classPriorJob 和conditionalProbilityJob 两个作业同时被调度,待它们全部运行完成后,predictJob 被调度。


对比以上两种方案,可以得到一个简单的结论:使用JobControl 编写DAG 作业更加简便,且能使多个无依赖关系的作业并行运行。

原文引自《Hadoop技术内幕-深入解析Mapreduce框架设计与实现原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值