YARN的Node Label机制

YARN的Node Label机制

Node Label的介绍

官网对NodeLabel的介绍如下:

Node label is a way to group nodes with similar characteristics and applications can specify where to run.
节点标签是一种对具有相似特征的节点进行分组的方法,应用程序可以指定在哪里运行。

那么标签到底是做什么的?

我们可以创建多个队列,划分集群的总的资源。例如队列hive占集群总资源的70%,那么这个70%具体会落地在哪一个节点上呢?没办法确定,有可能在qianfeng01,也有可能在qianfeng03。而节点标签,可以为每一个NodeManager打上标签,可以限定某一个程序只能够运行在哪些节点上。例如我希望我的wordcount的程序只会运行在qianfeng02和qianfeng03节点上,这就是标签的作用。

开启标签

修改 yarn-site.xml 文件,添加如下配置:

<!-- 启用节点标签 -->
<property>
    <name>yarn.node-labels.enabled</name>
    <value>true</value>
</property>

<!-- 节点标签存储的路径,可以是HDFS,也可以是本地文件系统 -->
<!-- 如果是本地文件系统,使用类似file:///home/yarn/node-label这样的路径 -->
<!-- 无论是HDFS,还是本地文件系统,需要保证RM有权限去访问 -->
<property>
    <name>yarn.node-labels.fs-store.root-dir</name>
    <value>hdfs://qianfeng01:9820/tmp/yarn/node-labels/</value>
</property>

<!-- 保持默认即可,也可以不配置这个选项 -->
<property>
    <name>yarn.node-labels.configuration-type</name>
    <value>centralized</value>
</property>

分发到每一个节点,重启YARN即可。

标签管理
添加标签
yarn rmadmin -addToClusterNodeLabels "label_1"
yarn rmadmin -addToClusterNodeLabels "label_2,label_3"
查看标签
yarn cluster --list-node-labels
删除标签
yarn rmadmin -removeFromClusterNodeLabels label_1
为节点打上标签
# 绑定一个NodeManager与Label
yarn rmadmin -replaceLabelsOnNode "qianfeng02=label_2"
# 绑定多个NodeManager与Label的关系,中间用空格分隔
yarn rmadmin -replaceLabelsOnNode "qianfeng02=label_2 qianfeng03=label_2"

# 一个标签可以绑定多个NodeManager,一个NodeManager只能绑定一个标签。
# 例如上方的,label_2就绑定在了qianfeng02和qianfeng03的NodeManager上。

# 绑定完成后,可以使用WebUI进行查看。
# 在WebUI的左侧,有Node Labels的查看,可以查看到所有的标签,以及对应的节点信息。
# 需要注意的是,如果某节点没有进行标签的绑定,则其在一个默认的<DEFAULT_PARTITION>上绑定。
为队列绑定标签

通过修改capacity-scheduler.xml实现:

<!-- 前文,我们已经新增了一个队列,现在共有两个队列: default、small -->

<!-- 设置某个队列可以使用的标签,*表示通配,可以使用所有标签 -->
<property>
    <name>yarn.scheduler.capacity.root.default.accessible-node-labels</name>
    <value>*</value>
</property>

<!-- 设置small队列可以使用label_3标签的节点资源 -->
<property>
    <name>yarn.scheduler.capacity.root.small.accessible-node-labels</name>
    <value>label_3</value>
</property>

<!-- 设置default队列可以使用label_2标签的节点资源最多60% -->
<property>
    <name>yarn.scheduler.capacity.root.default.accessible-node-labels.label_2.capacity</name>
    <value>60</value>
</property>

<!-- 设置small队列可以使用label_3标签的节点资源最多80% -->
<property>
    <name>yarn.scheduler.capacity.root.small.accessible-node-labels.label_3.capacity</name>
    <value>80</value>
</property>

<!-- 设置default队列,如果没有明确的标签指向,则默认使用label_3 -->
<property>
    <name>yarn.scheduler.capacity.root.default.default-node-label-expression</name>
    <value>label_3</value>
</property>

修改之后,无需重启,直接刷新一下队列即可: yarn rmadmin -refreshQueues

测试
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar pi -Dmapreduce.job.queuename=small 10 10

更多大数据精彩内容欢迎B站搜索“千锋教育”或者扫码领取全套资料  

【千锋教育】大数据开发全套教程,史上最全面的大数据学习视频

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值