3

8ノードのHadoopクラスターで作業しており、指定された構成で単純なストリーミングジョブを実行しようとしています。

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;" 

私は、Hadoop0.20.2を使用するHadoopCDH3u0にclouderaのディストリビューションを使用しています。このジョブの実行における問題は、ジョブが毎回失敗することです。ジョブはエラーを出します:

 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日間からこのエラーに取り組んでおり、何も理解できません。助けてください!!!

ありがとう&よろしく、アトゥル

4

1 に答える 1

1

同じ問題に直面しました。タスクトラッカーが指定されたメモリをタスクの子 JVM に割り当てることができない場合に発生します。

クラスターがビジー状態でなく、このジョブと一緒に他の多くのジョブを実行しているときに、同じジョブを再度実行してみてください。クラスターが通過するか、投機的実行が true になります。その場合、hadoop は別のタスク トラッカーで同じタスクを実行します。

于 2014-06-26T21:48:12.783 に答える