错误:java堆空间

kq0g1dla  于 2021-06-03  发布在  Hadoop
关注(0)|答案(4)|浏览(395)

在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:尝试\u 201303251213 \u 0012 \u m \u000000 \u 2,状态:失败错误:java堆空间13/03/25 15:03:43 info mapred.jobclient:任务id:尝试\u 201303251213 \u 0012 \u m \u000001 \u 2,状态:失败错误:java堆空间13/03/25 15:04:28 info mapred.jobclient:作业失败:失败的Map任务数超过了允许的限制。失败计数:1。lastfailedtask:任务\u 201303251213 \u 0012 \u m \u000000java.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)
让我们知道问题出在哪里。

w8ntj3qf

w8ntj3qf1#

使用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
qnakjoqk

qnakjoqk2#

显然,您已经用完了分配给java的堆大小。所以你应该试着增加。
为此,您可以在执行之前执行以下操作 hadoop 命令:

export HADOOP_OPTS="-Xmx4096m"

或者,您也可以通过将以下永久设置添加到 mapred-site.xml 文件,这个文件在 HADOOP_HOME/conf/ :

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

这会将您的java堆空间设置为4096mb(4gb),如果可以的话,您甚至可以先尝试使用较低的值。如果这也不起作用,那么增加它更多,如果你的机器支持它,如果没有,然后移动到一个有更多内存的机器,并尝试那里。因为堆空间意味着没有足够的ram可用于java。
更新:对于Hadoop2+,改为在mapreduce.map.java.opts中进行更改。

dw1jzc5e

dw1jzc5e3#

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

对我有用。
导出hadoop\u opts=“-xmx4096m”
不起作用

laawzig2

laawzig24#

如果在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>

on-site.xml文件
因为它的默认值2.1g有时太小了。

相关问题