2

我一直在尝试在 RHEL 6 中为 wordcount 运行一个简单的 Mapreduce 作业,但一直收到此错误。请帮忙。

13/01/13 19:59:01 INFO mapred.MapTask: io.sort.mb = 100
13/01/13 19:59:01 WARN mapred.LocalJobRunner: job_local_0001
java.lang.OutOfMemoryError: Java heap space
    at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:949)
    at org.apache.hadoop.mapred.MapTask$NewOutputCollector.<init>(MapTask.java:674)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:756)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:212)
13/01/13 19:59:02 INFO mapred.JobClient:  map 0% reduce 0%
13/01/13 19:59:02 INFO mapred.JobClient: Job complete: job_local_0001
13/01/13 19:59:02 INFO mapred.JobClient: Counters: 0
4

2 回答 2

5

您可能需要为最大堆和最大永久空间增加一些 JVM 设置。

我建议您在运行 Hadoop 作业时运行Visual VM,这样您就可以了解正在发生的事情。

你在运行多台服务器吗?也许您要求单个服务器做太多事情。

于 2013-01-13T14:55:40.677 回答
0

您可以使用它jstat -gcutil来监控 JVM 的内存使用情况。这将向您展示堆使用量增长的速度。

此外,您还可以启用 GC 日志记录,这是轻量级的,并且将为您实例化的每个 JVM 显示相同的内容:

-XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=jvm.log -XX:+HeapDumpOnOutOfMemoryError -Xloggc:gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -showversion

于 2013-01-14T23:29:26.973 回答