17

Ubuntu では、hadoop の例を実行しているとき:

$bin/hadoop jar hadoop-examples-1.0.4.jar grep input output 'dfs[a-z.]+' 

$echo $HADOOP_HEAPSIZE
2000

ログには、次のようなエラーが表示されます。

情報 mapred.JobClient: タスク ID: 試行_201303251213_0012_m_000000_2、ステータス: 失敗しました エラー: Java ヒープ スペース13/03/25 15:03:43 情報 mapred.JobClient: タスク ID: attempt_201303251213_0012_m_m_000001_2、ステータス: Java3 he/25 エラー/25 エラー/25 15:04:28 INFO mapred.JobClient: ジョブが失敗しました: 失敗したマップ タスクの数が許可された制限を超えました。FailedCount: 1. LastFailedTask: task_201303251213_0012_m_000000 java.io.IOException: ジョブが失敗しました! org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1265) で org.apache.hadoop.examples.Grep.run(Grep.java:69) で org.apache.hadoop.util.ToolRunner.run (ToolRunner.java:65) org.apache.hadoop.examples.Grep.main(Grep.java:93) で

何が問題なのかお知らせください。

4

4 に答える 4

45

明らかに、Java に割り当てられたヒープ サイズを使い果たしています。だからあなたはそれを増やすようにしなければなりません。

hadoopそのためには、コマンドを実行する前に次を実行できます。

export HADOOP_OPTS="-Xmx4096m"

または、ファイルに次の永続的な設定を追加することで、同じことを実現できmapred-site.xmlます。このファイルは次の場所にありますHADOOP_HOME/conf/

<property>
    <name>mapred.child.java.opts</name>
    <value>-Xmx4096m</value>
</property>

これにより、Java ヒープ スペースが 4096 MB (4GB) に設定されます。それが機能する場合は、最初に低い値で試してみることもできます。それでもうまくいかない場合は、マシンがサポートしている場合はさらに増やしてください。サポートしていない場合は、より多くのメモリを搭載したマシンに移動して、そこで試してください。ヒープスペースは、Java で使用できる十分な RAM がないことを意味します。

更新: Hadoop 2+ の場合は、代わりにmapreduce.map.java.optsを変更してください。

于 2013-03-25T09:45:42.583 に答える
7
<property>
   <name>mapred.child.java.opts</name>
  <value>-Xmx4096m</value>
</property>

私のために働きます。

export HADOOP_OPTS="-Xmx4096m"

動作しません

于 2013-10-17T23:08:26.260 に答える
3

Hadoop 2.5.0-cdh5.2.0 を使用すると、ローカル (シーケンシャル) Java プロセスのヒープ サイズを変更できました。

export HADOOP_HEAPSIZE=2900
hadoop jar analytics.jar .....

それが機能した理由は、 /usr/lib/hadoop/libexec/hadoop-config.sh が

# check envvars which might override default args
if [ "$HADOOP_HEAPSIZE" != "" ]; then
  #echo "run with heapsize $HADOOP_HEAPSIZE"
  JAVA_HEAP_MAX="-Xmx""$HADOOP_HEAPSIZE""m"
  #echo $JAVA_HEAP_MAX
fi
于 2015-07-31T21:58:07.470 に答える