hadoop - jobTracker自動停止問題

這個問題貌似很少看到直接的解決方法啊,是大家都沒遇到還是直接忽略了?該異常確實不影響整個hadoop系統任務的執行,但是對於我這個強迫症患者,天天看着任務報錯還是很不爽的。

找了很久,終於找到問題的本質和解決辦法。

以下爲原博客內容,感謝(作者):
-------------------------------------------------------------------------------
集羣出現大面積任務失敗,表現爲mapreduce剛啓動不久,就拋出異常,查看log可以看到,
Status : FAILED
java.lang.Throwable: Child Error
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271)
Caused by: java.io.IOException: Task process exit with nonzero status of 1.
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:258)

找了資料很長時間,經過了懷疑時鐘同步有問題,ulimit設置不正確,終於在臺灣,老外網站一個不經意的地方提到可能是寫入有問題,或者磁盤不足。
They say 'it's an OS limit on the number of sub-directories that can be related in another directory.'
查了磁盤空間,還有足夠的空間可以寫數據。
突然想到是否是日誌目錄告警,因爲每一個都會在log目錄下建一個子目錄的,而log目錄所在磁盤格式是ext3,而linux的ext3文件格式是有子目錄上限的,爲32000,除掉. ..,子目錄最多只能有31998.
查看/app/hadoop/logs/userlogs下子目錄,果然達到了上限31998.
一天的子任務log能達到上限,看來是錯誤連續出錯,導致子目錄來不及刪除引起。寫了個腳本,刪除各節點機器的部分userlogs下的子目錄log後,問題解決。
總結:除了每天刪除外,還要監控log子目錄是否會達到上限。   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章