Hadoop YARN作业资源占用超出User Limit Factor限制问题咨询
现象原因说明
你遇到的单用户资源超用属于正常情况,和两个参数的设计逻辑有关:
Minimum User Limit是用户最低资源保障下限,作用是队列资源紧张时,该用户至少能拿到队列总资源8%的配额,本身不具备上限约束能力。User Limit Factor是弹性用户上限,仅在队列内存在多个用户同时提交任务、有资源争抢的场景下才会生效,限制单用户的资源使用不超过队列容量 * User Limit Factor。如果当前队列内只有该用户的任务在运行,无其他用户的资源请求,该用户可以一直占用资源到队列的Max Capacity(你配置的90%集群总容量),不会触发这个上限约束。
配置是否生效验证
你可以通过两种方式确认配置已正常加载:
- 访问YARN ResourceManager WebUI的Scheduler页面,找到default队列的配置详情,核对两个参数的展示值是否和你配置的一致。
- 执行命令
yarn queue -status default,查看返回的队列参数是否匹配你的配置。
如果参数值一致,说明配置已经生效,只是你对参数的作用范围理解有误。
相关注意配置项
如果你需要实现单用户最多只能用队列8%资源的硬限制,需要根据你使用的调度器补充配置:
- 如果你使用Capacity调度器:新增配置
yarn.scheduler.capacity.default.user-limit-max= 8,该参数是单用户资源占比的硬上限,无论队列是否有其他用户任务,单用户资源占用都不能超过该阈值。 - 如果你使用Fair调度器:在default队列的配置段中,添加单用户的
maxResources限制,或者配置userMaxShare参数约束单用户的最大资源配额。
其他需要注意的相关配置: - 资源抢占相关配置:如果开启了抢占,需要调整
yarn.scheduler.capacity.preemption.max_wait_time(Capacity调度器)或fairSharePreemptionTimeout(Fair调度器),避免触发上限后资源回收延迟,导致短时间超用。 - AM资源限制:配置单用户的AM资源上限,避免单用户的ApplicationMaster占满所有配额,导致普通计算任务无法申请到资源。
- 版本适配:不同YARN版本的用户上限计算基数存在差异,部分版本以队列
Capacity为基数,部分版本以Max Capacity为基数,配置前需要核对你集群的YARN版本规则。
内容的提问来源于stack exchange,提问作者jguilhermemv
相关产品推荐
相关产品推荐

