JMX 服务器中的纱线调度程序队列配置错误
Yarn scheduler queue configuration is wrong in JMX server
我在 YARN 中定义了两个节点标签:stream
和 online
,每个标签包括 3 个节点,1024 MB RAM 和 1 个内核。 (总共有 6 个节点管理器)。我定义了两个队列 streamQ
和 onlineQ
,它们分别映射到标签为 stream
和 online
的节点。没有带有 default_partition
标签的节点。所以 capacity_scheduler.xml 配置为:
<!-- configuration of queue-root -->
<property>
<name>yarn.scheduler.capacity.root.queues</name>
<value>streamQ,onlineQ</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.accessible-node-labels</name>
<value>*</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.accessible-node-labels.stream.capacity</name>
<value>100</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.accessible-node-labels.online.capacity</name>
<value>100</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.default-node-label-expression</name>
<value>*</value>
</property>
<!-- configuration of queue-streamQ -->
<property>
<name>yarn.scheduler.capacity.root.streamQ.capacity</name>
<value>50</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.streamQ.maximum-capacity</name>
<value>100</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.streamQ.accessible-node-labels</name>
<value>stream</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.streamQ.accessible-node-labels.stream.capacity</name>
<value>100</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.streamQ.accessible-node-labels.online.capacity</name>
<value>0</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.streamQ.default-node-label-expression</name>
<value>stream</value>
</property>
<!-- configuration of queue-streamQ -->
<property>
<name>yarn.scheduler.capacity.root.onlineQ.capacity</name>
<value>50</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.onlineQ.maximum-capacity</name>
<value>100</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.onlineQ.accessible-node-labels</name>
<value>online</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.onlineQ.accessible-node-labels.online.capacity</name>
<value>100</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.onlineQ.accessible-node-labels.stream.capacity</name>
<value>0</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.onlineQ.default-node-label-expression</name>
<value>online</value>
</property>
</configuration>
当我 运行 应用程序在 onlineQ 队列上提交时,它只使用来自在线标记节点的资源。在带有 stream
标签的节点关闭的情况下(意味着只有 3 个带有标签 online
的节点管理器正在 运行ning),我在 YARN JMX 服务器数据中遇到了一些不一致,它显示:
根队列数据:
{
"name" : "Hadoop:service=ResourceManager,name=QueueMetrics,q0=root",
"modelerType" : "QueueMetrics,q0=root",
"tag.Queue" : "root",
"tag.Context" : "yarn",
"tag.Hostname" : "namenode",
"AvailableMB" : 3072,
"AvailableVCores" : 3,
}
streamQ 数据:
{
"name" : "Hadoop:service=ResourceManager,name=QueueMetrics,q0=root,q1=streamQ",
"modelerType" : "QueueMetrics,q0=root,q1=streamQ",
"tag.Queue" : "root.streamQ",
"tag.Context" : "yarn",
"tag.Hostname" : "namenode",
"AvailableMB" : 1536,
"AvailableVCores" : 1,
}
在线Q数据:
{
"name" : "Hadoop:service=ResourceManager,name=QueueMetrics,q0=root,q1=onlineQ",
"modelerType" : "QueueMetrics,q0=root,q1=onlineQ",
"tag.Queue" : "root.onlineQ",
"tag.Context" : "yarn",
"tag.Hostname" : "namenode",
"AvailableMB" : 1536,
"AvailableVCores" : 1,
}
问题出在 AvailableMB
和 AvailableVCores
中。根队列数据符合要求,但我预计 streamQ
队列中的资源为零,而 onlineQ
队列中的资源为 3072MB 和 3 个核心。但事实并非如此!那是因为属性:
<property>
<name>yarn.scheduler.capacity.root.streamQ.capacity</name>
<value>50</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.onlineQ.capacity</name>
<value>50</value>
</property>
但这应该只适用于没有标签的节点资源(在default_partition中)!有什么问题吗?
我把Hadoop版本从2.7.5
改成2.8.3
后解决了。
我在 YARN 中定义了两个节点标签:stream
和 online
,每个标签包括 3 个节点,1024 MB RAM 和 1 个内核。 (总共有 6 个节点管理器)。我定义了两个队列 streamQ
和 onlineQ
,它们分别映射到标签为 stream
和 online
的节点。没有带有 default_partition
标签的节点。所以 capacity_scheduler.xml 配置为:
<!-- configuration of queue-root -->
<property>
<name>yarn.scheduler.capacity.root.queues</name>
<value>streamQ,onlineQ</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.accessible-node-labels</name>
<value>*</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.accessible-node-labels.stream.capacity</name>
<value>100</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.accessible-node-labels.online.capacity</name>
<value>100</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.default-node-label-expression</name>
<value>*</value>
</property>
<!-- configuration of queue-streamQ -->
<property>
<name>yarn.scheduler.capacity.root.streamQ.capacity</name>
<value>50</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.streamQ.maximum-capacity</name>
<value>100</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.streamQ.accessible-node-labels</name>
<value>stream</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.streamQ.accessible-node-labels.stream.capacity</name>
<value>100</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.streamQ.accessible-node-labels.online.capacity</name>
<value>0</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.streamQ.default-node-label-expression</name>
<value>stream</value>
</property>
<!-- configuration of queue-streamQ -->
<property>
<name>yarn.scheduler.capacity.root.onlineQ.capacity</name>
<value>50</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.onlineQ.maximum-capacity</name>
<value>100</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.onlineQ.accessible-node-labels</name>
<value>online</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.onlineQ.accessible-node-labels.online.capacity</name>
<value>100</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.onlineQ.accessible-node-labels.stream.capacity</name>
<value>0</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.onlineQ.default-node-label-expression</name>
<value>online</value>
</property>
</configuration>
当我 运行 应用程序在 onlineQ 队列上提交时,它只使用来自在线标记节点的资源。在带有 stream
标签的节点关闭的情况下(意味着只有 3 个带有标签 online
的节点管理器正在 运行ning),我在 YARN JMX 服务器数据中遇到了一些不一致,它显示:
根队列数据:
{
"name" : "Hadoop:service=ResourceManager,name=QueueMetrics,q0=root",
"modelerType" : "QueueMetrics,q0=root",
"tag.Queue" : "root",
"tag.Context" : "yarn",
"tag.Hostname" : "namenode",
"AvailableMB" : 3072,
"AvailableVCores" : 3,
}
streamQ 数据:
{
"name" : "Hadoop:service=ResourceManager,name=QueueMetrics,q0=root,q1=streamQ",
"modelerType" : "QueueMetrics,q0=root,q1=streamQ",
"tag.Queue" : "root.streamQ",
"tag.Context" : "yarn",
"tag.Hostname" : "namenode",
"AvailableMB" : 1536,
"AvailableVCores" : 1,
}
在线Q数据:
{
"name" : "Hadoop:service=ResourceManager,name=QueueMetrics,q0=root,q1=onlineQ",
"modelerType" : "QueueMetrics,q0=root,q1=onlineQ",
"tag.Queue" : "root.onlineQ",
"tag.Context" : "yarn",
"tag.Hostname" : "namenode",
"AvailableMB" : 1536,
"AvailableVCores" : 1,
}
问题出在 AvailableMB
和 AvailableVCores
中。根队列数据符合要求,但我预计 streamQ
队列中的资源为零,而 onlineQ
队列中的资源为 3072MB 和 3 个核心。但事实并非如此!那是因为属性:
<property>
<name>yarn.scheduler.capacity.root.streamQ.capacity</name>
<value>50</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.onlineQ.capacity</name>
<value>50</value>
</property>
但这应该只适用于没有标签的节点资源(在default_partition中)!有什么问题吗?
我把Hadoop版本从2.7.5
改成2.8.3
后解决了。