为什么YARN java堆空间内存错误?

我想尝试在YARN中设置内存,所以我将尝试在yarn-site.xml和mapred-site.xml上配置一些参数。 顺便说一句,我使用hadoop 2.6.0。 但是,当我做mapreduce工作时,我收到一个错误。 它像这样说:

15/03/12 10:57:23 INFO mapreduce.Job: Task Id : attempt_1426132548565_0001_m_000002_0, Status : FAILED Error: Java heap space Container killed by the ApplicationMaster. Container killed on request. Exit code is 143 Container exited with a non-zero exit code 143 

我认为我已经正确配置了,我给map.java.opts和reduce.java.opts小尺寸= 64 MB。 我尝试配置一些参数,比如在mapred-site.xml上更改map.java.opts和reduce.java.opts,我仍然会收到此错误。 我认为我并不真正理解YARN记忆是如何工作的。 顺便说一句,我尝试单节点计算机。

Yarn处理资源管理,还提供可以使用MapReduce和实时工作负载的批处理工作负载。

可以在Yarn容器级别以及mapper和reducer级别设置内存设置。 以Yarn容器大小的增量请求内存。 Mapper和reducer任务在容器内运行。

mapreduce.map.memory.mb和mapreduce.reduce.memory.mb

上面的参数描述了map-reduce任务的内存上限,如果此任务订阅的内存超过此限制,则相应的容器将被终止。

这些参数分别确定可分配给映射器和减少任务的最大内存量。 让我们看一个例子:Mapper受内存上限的限制,该内存在配置参数mapreduce.map.memory.mb中定义。

但是,如果yarn.scheduler.minimum-allocation-mb的值大于mapreduce.map.memory.mb的此值,则会遵循yarn.scheduler.minimum-allocation-mb并给出该大小的容器出。

需要仔细设置此参数,如果设置不正确,可能会导致性能不佳或OutOfMemory错误。

mapreduce.reduce.java.opts和mapreduce.map.java.opts

此属性值需要小于mapreduce.map.memory.mb / mapreduce.reduce.memory.mb中定义的map / reduce任务的上限,因为它应该适合map / reduce任务的内存分配。

@Gaurav所说的是对的。 我有类似的问题,我尝试了下面的一些事情。在yarn-site.xml包含以下属性并重启VM

  yarn.nodemanager.vmem-check-enabled false Whether virtual memory limits will be enforced for containers   yarn.nodemanager.vmem-pmem-ratio 4 Ratio between virtual memory to physical memory when setting memory limits for containers