10

Hadoop を使用して mapreduce プログラムを実行すると、次のエラーが発生します。

10/01/18 10:52:48 INFO mapred.JobClient: Task Id : attempt_201001181020_0002_m_000014_0, Status : FAILED
  java.io.IOException: Task process exit with nonzero status of 1.
    at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:418)
10/01/18 10:52:48 WARN mapred.JobClient: Error reading task outputhttp://ubuntu.ubuntu-domain:50060/tasklog?plaintext=true&taskid=attempt_201001181020_0002_m_000014_0&filter=stdout
10/01/18 10:52:48 WARN mapred.JobClient: Error reading task outputhttp://ubuntu.ubuntu-domain:50060/tasklog?plaintext=true&taskid=attempt_201001181020_0002_m_000014_0&filter=stderr

このエラーは何ですか?

4

5 に答える 5

14

Hadoopがこのエラーを生成する理由の1つは、ログファイルを含むディレクトリがいっぱいになった場合です。これは、iノードごとに最大32000リンクのみを許可するExt3ファイルシステムの制限です。

ログディレクトリがどれだけいっぱいかを確認しますhadoop/userlogs

この問題の簡単なテストは、コマンドラインからディレクトリを作成してみることです。次に例を示します。$ mkdir hadoop/userlogs/testdir

ユーザーログにディレクトリが多すぎると、OSはディレクトリの作成に失敗し、ディレクトリが多すぎると報告するはずです。

于 2010-01-22T03:38:41.623 に答える
2

ログディレクトリのあるディスクのスペースが不足したときにも同じ問題が発生していました。

于 2011-04-12T06:50:17.683 に答える
2

ulimit を無制限に増やします。または別の解決策として、割り当てられたメモリを減らしてください。

于 2014-11-04T15:21:21.623 に答える
2

別の原因として、JVM に専用スペースを割り当てようとしたときに、そのスペースがマシンに存在しない場合の JVM エラーが考えられます。

sample code:
conf.set("mapred.child.java.opts", "-Xmx4096m");

Error message:
Error occurred during initialization of VM
Could not reserve enough space for object heap

解決策: -Xmx を、マシン上の JVM に提供できる専用のメモリ値 (例: "-Xmx1024m") に置き換えます。

于 2011-11-15T08:47:01.903 に答える