2012-11-13 209 views
0

作爲解決方法的一部分,我想使用兩個mapreduce作業(而不是一個),它們應該按順序運行以提供所需的效果。使用oozie運行多個mapreduce作業?

每個作業中的映射函數只是簡單地發出每個鍵,值對而不進行處理。每個工作中的縮減功能都不同,因爲他們進行不同類型的處理。我偶然發現了oozie,它似乎直接寫入後續作業的輸入流(或者不是嗎?) - 這會很好,因爲中間數據很大(I/O操作將成爲瓶頸)。

如何通過oozie(工作流中的2個作業)實現此目的?

我沒有去通過下面的參考資料,但他們只需運行一個作業作爲一個工作流程: https://cwiki.apache.org/confluence/display/OOZIE/Map+Reduce+Cookbook

幫助表示讚賞。

乾杯

回答

1

Oozie的是用於描述的作業,其中,該作業可以含有一組地圖的工作流的系統減少作業,豬腳本,FS等的操作,並支持叉和數據流的接合。

但是,它不允許您將一個MR作業的輸入作爲輸入流傳輸到另一個作業 - oozie中的map-reduce操作仍然需要某種類型的輸出格式,通常是基於文件的輸出格式,因此您的輸出從作業1仍然可以通過HDFS被序列化,由作業處理之前2.

的Oozie的文檔有多個MR工作,包括一個叉的一個示例:

http://oozie.apache.org/docs/3.2.0-incubating/WorkflowFunctionalSpec.html#Appendix_B_Workflow_Examples

+0

Thx爲信息。我想知道是否有任何技術可以在不使用磁盤I/O的情況下將數據從一個作業傳遞到另一個作業? – stholy

2

有,看Hadoop中的ChainMapper類。它允許您將一個映射器的映射輸出直接轉發到下一個映射器的輸入,而不會碰到磁盤。