我在根队列下有 4 个队列,配置如下。
|-------------|-----------------|---------------------|-------------------|
| Queue Name | Capacity (in %) | Max Capacity (in %) | User Limit Factor |
|-------------|-----------------|---------------------|-------------------|
| default | 10 | 30 | 10 |
|-------------|-----------------|---------------------|-------------------|
| thriftsvr | 5 | 30 | 10 |
|-------------|-----------------|---------------------|-------------------|
| stream | 70 | 70 | 10 |
|-------------|-----------------|---------------------|-------------------|
| batch | 15 | 30 | 10 |
|-------------|-----------------|---------------------|-------------------|
我已经按属性设置了容量yarn.scheduler.capacity.root.<queue-name>.capacity
和最大容量yarn.scheduler.capacity.root.<queue-name>.maximum-capacity
。
我的理解是,以上两个属性分别设置了绝对容量和绝对最大容量。这意味着队列流的 100% 等于集群总容量的 70%,它最多可以填充队列容量的 100%,也就是集群总容量的 70%。
现在,问题是当队列“流”被填满 66.4%(即当已用容量:66.4% 和绝对已用容量:46.5%)时,新作业进入挂起状态,通过说在队列“流”中提交“等待 AM 容器被分配、启动并注册到 RM”。
当我在 yarn UI 上检查队列配置时,它显示 Configured Max Capacity: 70.0% & Absolute Configured Max Capacity: 70.0% 但根据配置,队列“流”可以填充到 Used Capacity: 100% & Absolute Used Capacity: 70%
任何想法,为什么新作业无法利用队列流的容量直到 100%?