2011-07-15 40 views
3

我正在處理8節點Hadoop集羣,並且嘗試使用指定的配置執行簡單的流式作業。在多節點Hadoop集羣上執行流作業中的「子錯誤」(cloudera distribution CDH3u0 Hadoop 0.20.2)

hadoop jar /usr/lib/hadoop-0.20/contrib/streaming/hadoop-streaming-0.20.2-cdh3u0.jar \-D mapred.map.max.tacker.failures=10 \-D mared.map.max.attempts=8 \-D mapred.skip.attempts.to.start.skipping=8 \-D mapred.skip.map.max.skip.records=8 \-D mapred.skip.mode.enabled=true \-D mapred.max.map.failures.percent=5 \-input /user/hdfs/ABC/ \-output "/user/hdfs/output1/" \-mapper "perl -e 'while (<>) { chomp; print; }; exit;" \-reducer "perl -e 'while (<>) { ~s/LR\>/LR\>\n/g; print ; }; exit;" 

我使用cloudera的hadoop CDH3u0分佈與hadoop 0.20.2。執行這項工作的問題是每次工作都失敗。這項工作是給錯誤:

java.lang.Throwable: Child Error 
    at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:242) 
Caused by: java.io.IOException: Task process exit with nonzero status of 1. 
    at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:229) 

------- 
java.lang.Throwable: Child Error 
    at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:242) 
Caused by: java.io.IOException: Task process exit with nonzero status of 1. 
    at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:229) 

STDERR on the datanodes: 
    Exception in thread "main" java.io.IOException: Exception reading file:/mnt/hdfs/06/local/taskTracker/hdfs/jobcache/job_201107141446_0001/jobToken 
    at org.apache.hadoop.security.Credentials.readTokenStorageFile(Credentials.java:146) 
    at org.apache.hadoop.mapreduce.security.TokenCache.loadTokens(TokenCache.java:159) 
    at org.apache.hadoop.mapred.Child.main(Child.java:107) 
Caused by: java.io.FileNotFoundException: File file:/mnt/hdfs/06/local/taskTracker/hdfs/jobcache/job_201107141446_0001/jobToken does not exist. 

因爲我已經檢查了以下幾點錯誤的原因,仍然導致崩潰對此我無法理解的原因。

1. All the temp directories are in place 
2. Memory is way more than it might be required for job (running a small job) 
3. Permissions verified. 
4. Nothing Fancier done in the configuration just usual stuff. 

最奇怪的是,某個時候作業成功運行,大部分時間都失敗。有關這些問題的任何指導/幫助將非常有幫助。我從過去4天開始處理這個錯誤,我無法弄清楚任何事情。請幫忙!!!

感謝&問候, 阿圖爾

+0

運行mapreduce時檢查磁盤空間是否用完。記錄目錄相關的磁盤空間 – Infinity

回答

1

我都面臨着同樣的問題,它發生,如果任務服務器無法分配指定的內存給孩子JVM的任務。

當羣集不忙的時候再次嘗試執行同一個任務,並且這個任務會通過或者推測執行爲真,那樣的話hadoop會在另一個任務跟蹤器中執行相同的任務。