高阶MapReduce_1_链接多个MapReduce作业

本文详细介绍了如何在Hadoop中链接MapReduce作业,包括顺序链接、处理复杂依赖以及预处理和后处理阶段的链接策略。Job和JobControl类用于管理非线性作业依赖,ChainMapper和ChainReducer则简化了预处理和后处理步骤的实现。通过JobConf对象传递配置,确保作业间的正确执行顺序。同时,讨论了值传递和引用传递的选择对效率和数据安全的影响。
摘要由CSDN通过智能技术生成

链接MapReduce作业

1.      顺序链接MapReduce作业

顺序链接MapReduce作业就是将多个MapReduce作业作为生成的一个自动化执行序列,将上一个MapReduce作业的输出作为下一个MapReduce作业的输入。MapReduce作业的链接就类似于Unix 的管道:

mapreduce – 1 | mapreduce – 2 | mapreduce – 3 | ···

                  顺序链接MapReduce作业的执行过程,就是driver为MapReduce作业创建一个带有配置参数的JobConf对象,并将该对象传递给JobClient.runJob()来启动这个作业。而当JobClient.runJob()运行到作业结尾处时会被阻止,MapReduce作业的链接就会在这个时候调用另外一个MapReduce作业的driver。每个作业的driver都必须创建一个新的JobConf对象,并将其输入路径设置为前一个作业的输出路径。

2.      具有复杂依赖的MapReduce链接

如果两个或者多个MapReduce作业之间存在执行的先后顺序关系的话,那么这个时候就不能用顺序链接。Hadoop如何处理这种MapReduce作业之间的关系的呢,Hadoop通过Job和JobControl类来管理这种(非线性)作业之间的依赖。

Job对象是MapReduce作业的表现形式。Job对象的实例化通过传递一个JobConf对象到作业的构造函数中来实现,也就是说通过public Job(JobConf jobConf){}来实现实例化一个MapReduce作业。Job通过Job1.addDependingJob(Job2)来维护作业间的依赖关系这也意味着Job1在Job2完成之前是不会启动的。

JobControl对象负责管理并监视作业Job的执行。添加作业:addJob()方法。而当所有作业和依赖关系添加完成之后,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值