我在YARN中定义了两个节点标签:stream
和online
,每个标签包括3个节点,1024 MB RAM和1个核心。 (总计有6个nodemanager)。我定义了两个队列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
的节点管理器正在运行),我在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,
}
onlineQ数据:
{
"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中)!有什么问题?
答案 0 :(得分:0)
我将Hadoop版本从2.7.5
更改为2.8.3
后解决了。