JMX 服务器中的纱线调度程序队列配置错误

Yarn scheduler queue configuration is wrong in JMX server

我在 YARN 中定义了两个节点标签:streamonline,每个标签包括 3 个节点,1024 MB RAM 和 1 个内核。 (总共有 6 个节点管理器)。我定义了两个队列 streamQonlineQ,它们分别映射到标签为 streamonline 的节点。没有带有 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,
  }

问题出在 AvailableMBAvailableVCores 中。根队列数据符合要求,但我预计 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后解决了。