在Ubuntu中,当我运行hadoop示例时:
$bin/hadoop jar hadoop-examples-1.0.4.jar grep input output 'dfs[a-z.]+'
$echo $HADOOP_HEAPSIZE
2000
在日志中,我得到的错误如下:
信息mapred.JobClient:任务Id : attempt_201303251213_0012_m_000000_2,状态:失败错误: Java堆空间 13/03/25 15:03:43信息mapred.JobClient:任务Id :attempt_201303251213_0012_m_000001_2,状态:失败错误: Java堆空间13/03/25 15:04:28信息mapred.JobClient:作业失败:失败映射任务数超过允许的限制。FailedCount: 1. LastFailedTask: task_201303251213_0012_m_000000 java.io.IOException:作业失败!at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1265) 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)
让我们知道问题出在哪里。
发布于 2013-03-25 17:45:43
显然,您已经用完了分配给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(4 MB ),如果有效,您甚至可以先尝试使用较低的值。如果这也不起作用,那么在你的机器支持的情况下增加更多的内存,如果不支持,那么转移到有更多内存的机器上并在那里尝试。因为堆空间只意味着没有足够的RAM可供Java使用。
更新:用于Hadoop 2+的,改为在mapreduce.map.java.opts中进行更改。
发布于 2013-10-18 07:08:26
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx4096m</value>
</property>
这对我很有效。
导出HADOOP_OPTS="-Xmx4096m“
不起作用
发布于 2015-08-01 05:58:07
使用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
https://stackoverflow.com/questions/15609909
复制相似问题