2010-10-15 74 views
1

我有五个地图减少,我分别运行每个。我想把它们都汇集在一起​​。所以,一份工作的输出会转到下一份工作。目前,我编写了shell脚本来执行它们。有没有办法在java中写这个?请举一个例子。Pipeling hadoop map reduce jobs

感谢

回答

3

您可能会发现JobControl成为链接这些工作在一起的最简单的方法。对于更复杂的工作流程,我建议检查Oozie

2

嗨 我有类似的要求 一个做到这一点的方法是

提交的第一份工作执行以下

Job job1 = new Job(getConf()); 
job.waitForCompletion(true); 

,然后使用

if(job.isSuccessful()){ 
    //start another job with different Mapper. 
    //change config 
    Job job2 = new Job(getConf()); 
} 
1

Oozie的是检查状态后为你解决。您可以通过Oozie的操作标签提交map-reduce类型的作业,hive作业,猪作业,系统命令等。

它甚至有一个协调员,作为您的工作流的cron。

0

另一种可能性是Cascading,它也在Hadoop之上提供了一个抽象层:它似乎提供了与Hadoop概念密切合作的类似组合,但却让hadoop-do-M/R-heavy解除了使用Oozie工作流调用Pig脚本的问题。