频道栏目
首页 > 程序开发 > 综合88必发娱乐官网 > 其他综合 > 正文
Yarn运行Job报错:container is running beyond virtual memory limits
2017-06-17 09:24:00      个评论    来源:  
收藏   我要投稿

Yarn运行Job报错:container is running beyond virtual memory limits,在Spark on Yarn集群上运行Spark jar包,结果报错:

container *** is running beyond virtual memory limits……

问题分析:

yarn-site.xml 中关于资源的配置有问题。

yarn.nodemanager.resource.memory-mb = 3072,默认8192
yarn.scheduler.minimum-allocation-mb =150
yarn.scheduler.maximum-allocation-mb 默认8192
yarn.nodemanager.vmem-pmem-ratio 默认 2.1

其中 yarn.scheduler.maximum-allocation-mb 和yarn.nodemanager.vmem-pmem-ratio 都用了默认的配置。

一个container可用的最大虚拟内存是yarn.nodemanager.vmem-pmem-ratio与yarn.scheduler.minimum-allocation-mb的乘积,

即2.1 * 150m = 315mb。实际运行的时候,应用的虚拟内存超过了这个数值,所以报错。

所以,将yarn.nodemanager.vmem-pmem-ratio与yarn.scheduler.minimum-allocation-mb两个或其中一个值设置大一点,问题就

解决了。

另外,运行参数解释:

yarn.nodemanager.resource.memory-mb 默认8192
yarn.nodemanager.vmem-pmem-ratio 默认2.1
yarn.scheduler.minimum-allocation-mb 默认1024
yarn.scheduler.maximum-allocation-mb 默认8192

前两个是NM节点的资源参数,后两个是RM的资源参数。大小关系如下:

yarn.scheduler.minimum-allocation-mb

单个容器可申请的最小yarn.scheduler.minimum-allocation-mb与最大内存yarn.scheduler.maximum-allocation-mb,应用在运行申请内存时不能超过最大值,小于最小值则分配最小值。这两个值不能动态修改。

如果向RM请求的内存小于yarn.scheduler.minimum-allocation-mb时(比如mapred-site.xml中配置mapreduce.reduce.memory.mb),按yarn.scheduler.minimum-allocation-mb分配 。

点击复制链接 与好友分享!回本站首页
上一篇:httpclient 在获取返回值时,使用getResponseBody触发警告的问题
下一篇:Maven下SpringMVC简单例子
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 |

版权所有: 88bifa.com--致力于做实用的IT技术学习网站