链接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()方法。而当所有作业和依赖关系添加完成之后,