類RunningJob有幾種方法,拋出IOException
(大概當連接到Hadoop失敗?)我現在看的是isComplete()
。Hadoop:處理異常RunningJob.isComplete()
處理這種錯誤的正確方法是什麼?我應該假設這個工作已經死了嗎?我應該再等一等嗎?簡單地讓我的應用程序在這一點上死去不是一種選擇,因爲它在Hadoop和其他地方管理大量作業,並且它需要儘可能健壯。
類RunningJob有幾種方法,拋出IOException
(大概當連接到Hadoop失敗?)我現在看的是isComplete()
。Hadoop:處理異常RunningJob.isComplete()
處理這種錯誤的正確方法是什麼?我應該假設這個工作已經死了嗎?我應該再等一等嗎?簡單地讓我的應用程序在這一點上死去不是一種選擇,因爲它在Hadoop和其他地方管理大量作業,並且它需要儘可能健壯。
我的回答有點太長了評論,所以我很抱歉我沒有直接回答你的問題。我主要是從我的迴應經驗中談起。
如果一個異常被拋到這個級別,你幾乎可以認爲這個工作將會消失。我發現只是再次嘗試或嘗試自動解決問題以響應拋出的異常是徒勞的。有太多可能會出錯的地方。
通常,當通常運行正常的作業失敗時,系統中會發生某些不良情況需要修復。 NameNode可能已經死了,也許這個開關變得笨手笨腳,誰知道。不幸的是,這些問題需要人們關注。
在我看來,開發工作最好花在構建某種警報基礎設施(通常是電子郵件)上,讓您在工作失敗後立即知道......而不是考慮大量的案例。
一旦發現與羣集和作業有關的一些常見問題,您就可以開始在應用程序中構建異常處理。我認爲不值得花時間來預先考慮所有事情。
這是一個相當古老的話題,但是對於記錄來說,作業提交之後和實際開始執行之前,isComplete()調用也可能會引發異常。在這種情況下,例外並不意味着工作會失敗。您需要查看isComplete()的源代碼以瞭解它們如何處理這種情況。 – PNS 2013-06-04 17:03:02