2017-05-07 82 views
0

我有一個循環迭代次數太多,並且在Reducer函數中有一個計算量很大的函數。如何避免在Hadoop中發生Map/Reduce任務失敗

while (context.getCounter(SOLUTION_FLAG.SOLUTION_FOUND).getValue() < 1 && itrCnt < MAX_ITR) 

MAX_ITR是重複計數 - 用戶輸入

問題是,當我的Hadoop集羣上運行它有超時錯誤和減速的任務是殺死

17/05/06 21:09:43 INFO mapreduce.Job: Task Id : attempt_1494129392154_0001_r_000000_0, Status : FAILED 
AttemptID:attempt_1494129392154_0001_r_000000_0 Timed out after 600 secs 

我應該怎麼做,以避免時間到? (我的猜測是心跳信號。)

回答

1

超時的原因可能是reducer中的長時間運行計算,沒有將工作進度ststus報告回Hadoop框架。您可以嘗試使用下面的命令從默認的600秒增加超時間隔。

mapred.task.timeout=1800000 

這裏是更多reference對此。

如果這些設置無效,請考慮重新檢查代碼。代碼邏輯也可能存在問題。

+0

其實,[這](http://stackoverflow.com/a/11815803/7584363)一個完美的解決了這個問題,但參考鏈接是好的。謝謝 –

相關問題