2010-10-15 77 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腳本的問題。