在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)
让我们知道问题出在哪里。
4条答案
按热度按时间w8ntj3qf1#
使用hadoop 2.5.0-cdh5.2.0,我可以改变本地(顺序)java进程的堆大小:
它工作的原因是/usr/lib/hadoop/libexec/hadoop-config.sh
qnakjoqk2#
显然,您已经用完了分配给java的堆大小。所以你应该试着增加。
为此,您可以在执行之前执行以下操作
hadoop
命令:或者,您也可以通过将以下永久设置添加到
mapred-site.xml
文件,这个文件在HADOOP_HOME/conf/
:这会将您的java堆空间设置为4096mb(4gb),如果可以的话,您甚至可以先尝试使用较低的值。如果这也不起作用,那么增加它更多,如果你的机器支持它,如果没有,然后移动到一个有更多内存的机器,并尝试那里。因为堆空间意味着没有足够的ram可用于java。
更新:对于Hadoop2+,改为在mapreduce.map.java.opts中进行更改。
dw1jzc5e3#
对我有用。
导出hadoop\u opts=“-xmx4096m”
不起作用
laawzig24#
如果在mapred-site.xml上添加属性
有时会发生另一种情况,因为它超过了虚拟内存的限制在这种情况下,您必须添加
on-site.xml文件
因为它的默认值2.1g有时太小了。