hadoop - 错误 : Java heap space

标签 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: Task Id : attempt_201303251213_0012_m_000000_2, Status : FAILED Error: Java heap space 13/03/25 15:03:43 INFO mapred.JobClient: Task Id :attempt_201303251213_0012_m_000001_2, Status : FAILED Error: Java heap space13/03/25 15:04:28 INFO mapred.JobClient: Job Failed: # of failed Map Tasks exceeded allowed limit. FailedCount: 1. LastFailedTask: task_201303251213_0012_m_000000 java.io.IOException: Job failed! 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)

让我们知道问题是什么。

最佳答案

很明显,您已经用完了分配给 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),如果可行,您甚至可以先尝试使用较低的值。如果那也不起作用,那么如果您的机器支持它,则增加它更多,如果不支持,则移至具有更多内存的机器并在那里尝试。由于堆空间仅仅意味着您没有足够的 RAM 可用于 Java。

更新:对于 Hadoop 2+,请改为在 mapreduce.map.java.opts 中进行更改。

关于hadoop - 错误 : Java heap space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15609909/

相关文章:

hadoop - HBase master 未运行异常

hadoop - MapReduce 任务数

java - Base64数据流解码

r - 在Hadoop服务器上分配R处理

hadoop - Hadoop:激励压缩的输出中的控制角色

hadoop - 从外部连接kafka的问题

hadoop - 我的 pig UDF在本地模式下运行,但是在群集上以 “Deserialization error: could not instantiate”失败

hadoop - 在单节点Hadoop集群上将reducer计数增加到1以上会导致串行reducer的执行

hadoop - 知道hadoop中数据节点的磁盘空间吗?

hadoop - 从其他 Pig 脚本调用 Pig Latin 脚本