我想尝试在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记忆是如何工作的。顺便说一下,我试试单节点计算机。
答案 0 :(得分:10)
Yarn处理资源管理,还提供可以使用MapReduce和实时工作负载的批处理工作负载。
可以在Yarn容器级别以及mapper和reducer级别设置内存设置。以Yarn容器大小的增量请求内存。 Mapper和reducer任务在容器内运行。
mapreduce.map.memory.mb和 mapreduce.reduce.memory.mb 强>
以上参数描述了map-reduce任务的内存上限,如果此任务订阅的内存超出此限制,相应的容器将被终止。
这些参数分别确定可分配给映射器和减少任务的最大内存量。 我们来看一个例子: 映射器受内存上限的约束,该上限在配置参数 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任务的内存分配。
答案 1 :(得分:2)
@Gaurav所说的是对的。
我有类似的问题,我尝试了下面的一些事情。在yarn-site.xml
中包含以下属性并重新启动VM
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>Whether virtual memory limits will be enforced for containers</description>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>