如何理解Yarn队列状态结果?当前容量1100%原因咨询
你执行的命令及输出如下:
$ yarn queue -status my-queue Queue Information : Queue Name : my-queue State : RUNNING Capacity : 10.0% Current Capacity : 1100.0% Maximum Capacity : 100.0% Default Node Label expression : pool1 Accessible Node Labels : pool1
Current Capacity显示1100.0%的核心原因是YARN Capacity Scheduler的弹性资源共享机制,结合以下具体场景导致:
资源计算逻辑的定义
Current Capacity的计算公式为:Current Capacity = (队列当前已使用资源量 / 队列配置的Capacity配额资源量) × 100%。这里的Capacity是队列的最小资源保证(你配置的10.0%对应集群总资源的10%),当集群存在大量空闲资源时,YARN允许队列突破自身最小配额,占用更多资源,直到触及Maximum Capacity(你配置的100.0%,即对应集群总资源的100%)。比如集群总CPU资源为1000核,队列最小配额是100核,若pool1节点池总资源为1100核且完全空闲,队列任务占满资源后,Current Capacity就会达到(1100/100)×100%=1100%。节点标签的资源范围
你的队列仅能访问pool1标签的节点,此时队列的Capacity和Maximum Capacity都是基于pool1节点池的总资源计算,而非整个集群。如果pool1节点池的实际总资源远大于预期,队列占满该节点池资源时,就会出现Current Capacity远超100%的情况。多资源类型的综合计算
YARN默认同时计算CPU和内存两种资源的占用情况,Current Capacity是两种资源的综合占比结果。如果某一种资源(比如内存)的占用量远超过队列配额,也会导致综合计算出的Current Capacity大幅超过100%。
内容的提问来源于stack exchange,提问作者Tom

