2012-05-30 131 views
0

在我的申請,我有一個鏈接在一起的一系列5個Hadoop作業的順序使用恢復Hadoop作業流程

Job.waitForCompletion(false)

現在,Hadoop的文件中明確規定

 
...the onus on ensuring jobs are complete 
(success/failure) lies squarely on the clients 

現在,如果我的作業客戶端程序崩潰,如何確保作業客戶端程序可以在重新啓動時在崩潰時恢復?有沒有辦法查詢JobTracker並獲得特定作業的句柄,然後檢查其作業狀態?

+0

不是一個答案,但你應該看看http://incubator.apache.org/oozie/它的工作流程引擎,它允許你管理/從這樣 –

+0

失敗如果Oozie的自身崩潰,會發生什麼恢復?它可以在重新啓動時從崩潰點恢復嗎? – cosmos

+0

oozie使用通知url配置屬性 - 當每個MR作業完成時,作業跟蹤器通過此URL通知OOZIE。如果oozie崩潰,那麼一旦它重新啓動,您可以手動指示oozie在工作流程中的上一個作業完成後恢復該特定工作流程 –

回答

0

下面的方法可以嘗試出來的時候,客戶端本身崩潰:

Hadoop提供JobClient可用於集羣跟蹤當前正在運行的作業。所以,當以下JobClient的方法重新啓動客戶端可以使用:

  • jobsToComplete()-GET)未完成,沒有失敗
  • jobsToComplete(作業 - 獲取未完成的工作,而不是失敗
  • getAllJobs() - 獲取提交的作業。
  • getClusterStatus() - 獲取有關Map-Reduce集羣的狀態信息。
  • submitJob(JobConf作業) - 向MR系統提交作業(如果失敗)。