具体报错如下:
Container is running beyond virtual memory limits. Current usage: 100.3 MB of 1 GB physical memory used; 2.4 GB of 2.1 GB virtual memory used. Killing container.
分析:
该错误是YARN的虚拟内存计算方式导致,上例中用户程序申请的内存为1Gb,YARN根据此值乘以一个比例(默认为2.1)得出申请的虚拟内存的 值,当YARN计算的用户程序所需虚拟内存值大于计算出来的值时,就会报出以上错误。
解决方法:
1、如果是physical memory超了
修改yarn-site-xml对job的内存限制
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>1024</value>
</property>
2、如果是virtual memory超了
修改nodemanager的yarn-site.xml配置文件,添加如下:
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>3</value>
<description>将比例值由2.1改为3</description>
</property>
参考文章:
https://blog.csdn.net/u012551524/article/details/80544629
https://blog.csdn.net/dd390738878/article/details/9785679
网友评论