yarn资源分配常见问题解析

举报
泽及天下不为仁 发表于 2020/06/08 09:43:14 2020/06/08
【摘要】 yarn还有资源,为什么我任务启动更多的container; yarn队列资源为什么能使用到200%,超过限制使用值; yarn还有资源,但是提交任务一直处于Pending状态;

问题1

问题描述:

yarn还有资源,为什么我任务启动更多的container

问题背景:

yarn总资源有256G内存/128vcore,有4NodeManager提供;

spark任务配置:

driver内存10G/8vcore

executor内存16G/8vcore

节点当前资源状况:

    一个JDBCServer任务,占用一个container1G+1vcore

    一个Spark任务,占用3container5G+5vcore

    剩余资源:250G+122vcore

理论上新的spark任务可以启动1driver+14executor,实际上只能同时启动10executor

问题分析点:

1.  理论上executor使用4G那么启动这个executorcontainer应该需要更大的内存,因此一个container使用了16.5G内存;

2.  一个container在运行的时候必须是完整的启动,也就是资源必须由同一个节点提供,不能由2个节点各提供一部分;

详细解析:

实际在使用中,container分配到各个节点上运行情况如下图:

按照上图分配的情形,集群应该剩余58G内存+26vcore,还能启动3container,但是各个节点上已经无法再启动一个完整的container16.5G+8vcore

因此,就出现问题描述里面的情况,yarn还有大量资源,但是无法被使用。

问题2

问题描述:

yarn队列资源为什么能使用到200%

问题背景:

配置某个yarn队列资源:默认资源池容量10%,默认资源池最大容量100%

实际在使用的过程中会出现资源使用率200%以上的情况:

问题分析:

此问题涉及概念:

Absolute Configured Capacity

    配置了此队列在yarn上能使用的最小资源,当yarn任务繁忙的时候,依旧会保证这个配置的比例资源给队列使用。

Absolute Configured Max Capacity

    配置了此队列在yarn上能使用的最大资源,当yarn任务不多的时候,队列上的任务可以占用yarn资源的最大值。

而问题中的队列使用容量,比值是(实际使用资源/最小可用资源),因此可以在yarn任务不繁忙的时候占用超过100%的最小资源限制。

问题3

问题描述:

yarn还有资源,但是提交任务一直处于Pending状态。

问题背景:

yarn界面上显示还有资源可以使用,但是新提交的任务一直处于Pending状态(ACCEPTED状态)

问题分析:

yarn队列除了最大资源限制,还对队列中所有任务的ApplicationMaster占用资源的总和有限制:Configured Max Application Master Limit

例如上图中的default队列,限制了40%的资源,而在当前状态中已经有一个任务占用了一个container1G+1vcore),因此后续任务的ApplicationMaster总资源不能超过3.5G+4vcore

如果提交一个任务的ApplicationMaster请求资源大于2.5G或者大于3vcore,则任务会被Pending,直到有足够的队列资源比例来启动此任务的ApplicationMaster


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。