Yarn Node Label方案落地

背景

当Hadoop集群需要提供SLA资源隔离的时候,有两个选择,一个是独立建立新的集群,另一个是通过yarn node label特性来通过软件设置隔离。这里介绍后者来实现方案落地。

环境

Hadoop版本:2.6.0-cdh5.13.0以上
RM模式非HA,NM数:5

构建步骤

步骤1.Node-Label相关配置,加在yarn-site.xml里面,目前只有capacity scheduler支持比较好。

<property>
<name>yarn.node-labels.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.node-labels.fs-store.root-dir</name>
<value>file:///home/yarn/node-label</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>

然后启动rm。

步骤2,添加label标签。

yarn rmadmin -addToClusterNodeLabels "label1,label2"

步骤3,給nodemager节点打上标签

$ yarn rmadmin -replaceLabelsOnNode "hostname1,label1 hostname2,label2"

注意这里的格式为,label+空格区分+,label2。

然后可以通过命令行或RM UI观察标签是否打成功。

步骤4,划分队列标签。在root队列下划分出a,b队列,a队列的任务对应label1标签,b对应label2标签。配置如下:

<property>
<name>yarn.scheduler.capacity.root.accessible-node-labels.label1.capacity</name>
<value>100</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.accessible-node-labels.label2.capacity</name>
<value>100</value>
</property>

<property>
<name>yarn.scheduler.capacity.root.a.accessible-node-labels</name>
<value>label1</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.b.accessible-node-labels</name>
<value>label2</value>
</property>

<property>
<name>yarn.scheduler.capacity.root.a.capacity</name>
<value>30</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.b.capacity</name>
<value>10</value>
</property>

<property>
<name>yarn.scheduler.capacity.root.a.accessible-node-labels.label1.capacity</name>
<value>100</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.b.accessible-node-labels.label2.capacity</name>
<value>100</value>
</property>

<property>
<name>yarn.scheduler.capacity.root.a.default-node-label-expression</name>
<value>label1</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.b.default-node-label-expression</name>
<value>label2</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.default.default-node-label-expression</name>
<value></value>
</property>

步骤5,刷新队列

yarn rmadmin -refreshQueues

通过UI观察是否配置生效,标签是否已加入队列a,b.

步骤6,指定队列,提交hive任务,判断任务是否只允许再标签对应的节点上。

经过多次分标签a,b测试,的确跑在标签所属下的节点上。

步骤7, 压测

通过压测程序进行label标签下的分配测试,运行SliveTest,执行命令如下:

cd /home/vipshop/platform/hadoop-2.7.6/share/hadoop/mapreduce/

yarn jar hadoop-mapreduce-client-jobclient-2.7.6.jar SliveTest -maps 40 -duation 172800 -reduce 20 -blockSize 1073741824 -files 10000000 -dirs 50000

没有发现性能问题,RM连续分配40个Container在指定标签下。
nb3.jpg

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值