设为首页 收藏本站
查看: 464|回复: 0

[经验分享] Hadoop 新版api中的JobControl实现

[复制链接]

尚未签到

发表于 2016-12-8 10:38:42 | 显示全部楼层 |阅读模式
依赖关系组合式MapReduce
答案是采取JobControl,直接上代码。
JobControl依赖关系组合式MpaReduce。
旧版实现:org.apache.hadoop.mapred包下

Configuration job1conf = new Configuration();
Job job1 = new Job(job1conf,"Job1");
.........//job1 其他设置
Configuration job2conf = new Configuration();
Job job2 = new Job(job2conf,"Job2");
.........//job2 其他设置
Configuration job3conf = new Configuration();
Job job3 = new Job(job3conf,"Job3");
.........//job3 其他设置
job3.addDepending(job1);//设置job3和job1的依赖关系
job3.addDepending(job2);
JobControl JC = new JobControl("123");
JC.addJob(job1);//把三个job加入到jobcontorl中
JC.addJob(job2);
JC.addJob(job3);
JC.run();
 新版api实现:org.apache.hadoop.mapreduce.lib.jobcontrol.*(在hadoop 0.20.2还没有,hadoop 1.x已经有了)
使用该包下的ControlledJob与JobControl

/**
* job2 依赖于 job1
* @param job1
* @param job2
* @param chainName
* @return
* @throws IOException
*/  
public static int handleJobChain(Job job1 ,Job job2, String chainName) throws IOException{  
ControlledJob controlledJob1 = new ControlledJob(job1.getConfiguration());
controlledJob1.setJob(job1);         
ControlledJob controlledJob2 = new ControlledJob(job2.getConfiguration())
controlledJob2.setJob(job2);  
controlledJob2.addDependingJob(controlledJob1);         
JobControl jc = new JobControl(chainName);  
jc.addJob(controlledJob1);  
jc.addJob(controlledJob2);  
Thread jcThread = new Thread(jc);  
jcThread.start();  
while(true){  
if(jc.allFinished()){  
System.out.println(jc.getSuccessfulJobList());  
jc.stop();  
return 0;  
}  
if(jc.getFailedJobList().size() > 0){  
System.out.println(jc.getFailedJobList());  
jc.stop();  
return 1;  
}  
}  
}
 
要注意的地方就是hadoop的JobControl类实现了线程Runnable接口。我们需要实例化一个线程来让它启动。直接调用JobControl的run()方法,线程将无法结束。要调用JobControl.stop()才能停止

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-311405-1-1.html 上篇帖子: [环境] hadoop 开发环境maven管理 下篇帖子: hadoop学习笔记之六:一些优化点
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表