我在根队列下有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%。
现在,问题是当队列'stream‘填满了66.4% (即当已用容量: 66.4%,绝对已用容量: 46.5%)时,新作业进入挂起状态,通过说“等待AM容器被分配,启动并注册到RM”在队列'stream’中提交。
当我在yarn UI上检查队列配置时,它显示配置的最大容量: 70.0%和绝对配置的最大容量: 70.0%。但是根据配置,队列'stream‘可以填满,直到使用容量: 100%和绝对使用容量: 70%。

你知道为什么新的作业在100%之前都不能使用队列流的容量吗?
发布于 2019-11-19 23:03:28
我怀疑这里令人困惑的是.capacity和.maximum-capacity属性都可以定义为
相对于父队列值百分比的资源值(浮点数,例如12.5)
[memory=204800,vcores=122]),
root如果你还有任何问题,请一定要问。
要获得完整参考,只需阅读文档:https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html#Queue_Properties
发布于 2020-03-13 17:36:36
我将以this book中的一个例子来解释yarn.scheduler.capacity.root.queue-name.maximum-capacity是如何工作的。
Capacity Scheduler配置文件示例,名为capacity-Scheder.xml。它在根队列下定义了两个队列,prod和dev,分别拥有40%和60%的容量。请注意,通过设置yarn.scheduler.capacity形式的配置属性来配置特定的队列,其中是队列的分层(点分)路径,如root.prod。
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.scheduler.capacity.root.queues</name>
<value>prod,dev</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.queues</name>
<value>eng,science</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.prod.capacity</name>
<value>40</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.capacity</name>
<value>60</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.maximum-capacity</name>
<value>75</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.eng.capacity</name>
<value>50</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.science.capacity</name>
<value>50</value>
</property>
</configuration>如您所见,dev队列被进一步划分为相等容量的eng队列和science队列。,以便当prod队列空闲时,开发队列不会用完所有群集资源,它的最大容量设置为75%。换句话说,prod队列始终有25%的集群可供立即使用。由于没有为其他队列设置最大容量,eng或science队列中的作业可能会使用所有dev队列的容量(最高可达集群的75% ),或者prod队列可能会使用整个集群。
有关队列配置的更多信息,请参阅YARN doc。
发布于 2021-07-23 21:40:31
https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-instances-guidelines.html
根据上面的链接,AWS已经从EMR版本6和更高版本删除了这些标签。
因此,这适用于EMR大于6的版本,但对于较低版本,删除核心标签可能会有所帮助。
https://stackoverflow.com/questions/56492002
复制相似问题