2014-02-20 42 views
0

我運行一個單節點集羣和處理data.I有一組MapReduce作業的時間序列定期運行(使用Quartz crontrigger)從客戶application.For例如後運行MapReduce作業順序一個,如何另一個

job1 : runs every 10 min .priority VERY_HIGH 
job2 : runs every hour (it takes input from the output of job1).priority HIGH 
job3 : runs every day(it takes input from the output of job2).priority NORMAL 

..... 

一切工作正常。但有時候,可以同時觸發多個作業,例如上午00:00,將會觸發作業1,作業2,作業3。儘管作業優先級設置了,但由於可用的地圖插槽,這些作業被發現並行執行。所以一些輸入數據錯過了低優先級的作業。

Brief:我需要嚴格執行基於作業優先級的FIFO。意味着它應該被限制在一次只能運行一個作業的方式。即job1完成,然後job2完成,job3 ..

我不知道hadoop調度程序如何幫助我。請指教。

回答

1

嘗試改變這些設置,以1:

mapred.tasktracker.map.tasks.maximum 1 mapred.tasktracker.reduce.tasks.maximum 1

如果將限制沒有映射器和減速到1,那麼下一個工作必須等待下一個映射器完成。如果你看,這不是一個好的解決方案。

使用Oozie工作流引擎將最適合您的需求。

+0

我同意,你需要的是一個工作流程和oozie是要走的路 – abhinav

0

我一直在研究一種名爲Soop的新工作流引擎。 https://github.com/radixCSgeek/soop它非常輕巧,並且使用類似cron的語法進行設置和運行很簡單。您可以指定作業依賴關係(包括作業之間的虛擬依賴關係),並且DAG引擎將確保以正確的順序執行它們。