错误:Java堆空间

时间:2013-03-25 07:43:10

标签: hadoop

在Ubuntu中,当我运行hadoop示例时:

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

$echo $HADOOP_HEAPSIZE
2000

在日志中,我收到的错误为:

  

INFO mapred.JobClient:任务ID:attempt_201303251213_0012_m_000000_2,   状态:未通过   错误:Java堆空间 13/03/25 15:03:43 INFO mapred.JobClient:任务ID:attempt_201303251213_0012_m_000001_2,状态:FAILED错误:   Java heap space13 / 03/25 15:04:28 INFO mapred.JobClient:作业失败:#   失败的Map任务超出允许的限制。 FailedCount:1。   LastFailedTask:task_201303251213_0012_m_000000   java.io.IOException:作业失败了!在   org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1265)at at   org.apache.hadoop.examples.Grep.run(Grep.java:69)at   org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)at   org.apache.hadoop.examples.Grep.main(Grep.java:93)

让我们知道问题是什么。

4 个答案:

答案 0 :(得分:42)

显然,你已经用完了分配给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 中进行更改。

答案 1 :(得分:7)

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

适合我。

  

导出HADOOP_OPTS =“ - Xmx4096m”

不起作用

答案 2 :(得分: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

答案 3 :(得分:0)

如果在mapred-site.xml上添加属性

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

有时会发生另一种情况 因为它超过虚拟内存限制 在这种情况下, 你必须添加

<property>
        <name>yarn.nodemanager.vmem-pmem-ratio</name>
        <value>4.2</value>
</property>

在yarn-site.xml上

因为它的默认2.1G有时太小。