Yarn NodeLabel简介


背景

在我们实际的部署环境中,经常会出现不同的机器类型,比如部分节点是计算型,部分节点是内存型;不同阶段采购设备配置也可能存在较大差异;大型集群开通多租户情况下,需要保障特定租户的稳定性及优先级,避免其他用户的任务对其造成影响;

node label节点标签就是此类问题的一种解决方案;运维人员可以根据节点的特性将其划分到不同的分区来满足多维度的使用需求。

特性

  • 一个Node Manager节点只能属于一个label,如果节点没有配置label,则其属于一个不存在的DEFAULT分区;
  • label有两种模式:exclusivenon-exclusive
    • non-exclusive:该模式下节点同时归属于DEFAULT分区,当用户申请DEFAULT分区的资源时,可同时使用non-exclusive的资源;
  • 用户可以为每个队列配置可访问的分区,默认只可以访问DEFAULT分区;
  • 可以配置每个队列可访问特定分区的资源比例;
  • 支持配置动态变更及动态生效;

常用命令

  • 查询labelyarn cluster -lnl
  • 添加labelyarn rmadmin -addToClusterNodeLabels [label1,label2]
  • 删除labelyarn rmadmin -removeFromClusterNodeClusters [label1,label2]
  • 为节点配置labelyarn rmadmin -replaceLabelsOnNode [node1:port = laebel1,label2]
  • 查询节点:yarn node -list -all
  • 查询节点状态:yarn node -state <nodeId>

参数配置

默认情况下,集群是未开启node label标签功能的,如需启用,需调整yarn-site.xml参数:

<property>
  <name>yarn.node-labels.fs-store.root-dir</name>
  <value>hdfs://namenode:port/path/to/store/node-labels/</value>
</property>
<property>
	<name>yarn.node-labels.enabled</name>
  <value>true</value>
</property>
<property>
	<name>yarn.resourcemanager.scheduler.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>

Node Label需与CapacityScheduler调度策略配合使用,配置样例如下:

<!--capacity-scheduler.xml-->
<configuration>
	<property>
  	<name>yarn.scheduler.capacity.root.queues</name>
    <value>poc,demo</value>
    <description>设置二级子队列 </description>
  </property>
  
  <property>
  	<name>yarn.scheduler.capacity.root.capacity</name>
    <value>100</value>
    <description>定义root队列默认分区容量为100%</description>
  </property>
  
  <property>
  	<name>yarn.scheduler.capacity.root.maximum-capacity</name>
    <value>100</value>
    <description>定义root队列默认分区的资源最大容量为100%</description>
  </property>
  
 	<property>
    <name>yarn.scheduler.capacity.root.accessible-node-labels</name>
    <value>*</value>
    <description>定义root队列可以访问的标签为所有分区,如果为空则只能访问默认分区DEFAULT</description>
  </property>
  
  <property>
  	<name>yarn.scheduler.capacity.root.accessible-node-labels.CPU.capacity</name>
    <value>100</value>
    <description>定义root队列可以访问的CPU分区容量</description>
  </property>
  
  <property>
  	<name>yarn.scheduler.capacity.root.accessible-node-labels.GPU.capacity</name>
    <value>100</value>
  </property>
  
  
  <property>
  	<name>yarn.scheduler.capacity.root.poc.capacity</name>
    <value>40</value>
    <description>定义poc队列使用默认分区的容量大小</description>
  </property>
  
  <proerpty>
  	<name>yarn.scheduler.capacity.root.poc.maximum-capacity</name>
    <value>80</value>
  	<description>定义poc队列可使用默认分区的最大容量为100%</description>
  </proerpty>

</configuration>

文章作者: semon
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 semon !
评论
表情 | 预览
快来做第一个评论的人吧~
Powered By Valine
v1.3.10
  目录