yarn 队列标签配置及使用

563 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

配置标签nodelabel

yarn-site.xml yarn.node-labels.enabled: true yarn.node-labels.fs-store.root-dir: hdfs://hadoop01:8020/yarn/node-labels yarn.resourcemanager.scheduler.class: org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

以上配置完成,重启yarn,切换到yarn用户,添加标签 添加标签: yarn rmadmin -addToClusterNodeLabels "real_flink_1(exclusive=true)" #可以不写()的内容,exclustive默认是true,也就是默认独占整台节点 yarn rmadmin -addToClusterNodeLabels real_flink_1

查看已有标签集合: yarn cluster --list-node-labels

删除集群标签集合里的标签: yarn rmadmin -removeFromClusterNodeLabels real_flink_1

将集合内的标签添加到机器上: yarn rmadmin -replaceLabelsOnNode "hadoop03=real_flink_1" #hadoop02 这里默认是hadoop03这台机器上的所有nodemanager,如果要特指,用hostname:port即可,port为YARN UI上的Node Address

yarn rmadmin -replaceLabelsOnNode "hadoop05=real_flink_1 hadoop06=real_flink_1 hadoop07=real_flink_1"

利用这种方式实现删除机器上的标签: yarn rmadmin -replaceLabelsOnNode "hadoop05=real_flink_1 hadoop06=real_flink_1 hadoop07=real_flink_1"

刷新队列 yarn rmadmin -refreshQueues 配置完成去查看 yarn UI Node Labels 信息

配置queue和label

切记需要添加完label以后才能配置queue label capacity-scheduler.xml配置: yarn.scheduler.capacity.root.queues=default,realtime,realtime1 yarn.scheduler.capacity.root.capacity=100 yarn.scheduler.capacity.root.accessible-node-labels=*

yarn.scheduler.capacity.root.default.state=RUNNING yarn.scheduler.capacity.root.default.capacity=70 yarn.scheduler.capacity.root.default.accessible-node-labels= #必须空格 yarn.scheduler.capacity.root.default.default-node-label-expression= #default队列任务默认的标签为空(必须空格),则root.default队列只能在没有label的node上执行,如果环境环境中不存在没有label的node,则提交到root.default的任务卡死

yarn.scheduler.capacity.root.accessible-node-labels.real_flink_1.capacity=100 yarn.scheduler.capacity.root.realtime.state=RUNNING yarn.scheduler.capacity.root.realtime.capacity=20 yarn.scheduler.capacity.root.realtime.accessible-node-labels=real_flink_1 #允许realtime队列在real_flink_1标签的机器上运行,可以有多个label yarn.scheduler.capacity.root.realtime.accessible-node-labels.real_flink_1.capacity=70 #允许realtime队列使用real_flink_1标签的资源最多50% yarn.scheduler.capacity.root.realtime.default-node-label-expression=real_flink_1 #如果realtime队列的任务没有指向特定的标签,那默认就使用real_flink_1标签的资源,此处只能是一个label,不能是多个label yarn.scheduler.capacity.root.realtime1.state=RUNNING yarn.scheduler.capacity.root.realtime1.capacity=10 yarn.scheduler.capacity.root.realtime1.accessible-node-labels=real_flink_1 yarn.scheduler.capacity.root.realtime1.accessible-node-labels.real_flink_1.capacity=30 yarn.scheduler.capacity.root.realtime1.default-node-label-expression=real_flink_1

刷新队列 yarn rmadmin -refreshQueues

使用队列

设置引擎 set hive.execution.engine=mr;
set hive.execution.engine=spark;
set hive.execution.engine=tez;

如果使用的是mr(原生mapreduce) set mapred.job.queue.name=queue1; 老版本 set mapreduce.job.queuename=queue2; 新版本

如果使用的引擎是tez set tez.queue.name=realtime 设置队列(realtime为队列名称,默认为default)

参考: YARN Node Labels hive设置队列