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子目錄是否會達到上限。