前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >容量调度绝对值配置队列使用与避坑

容量调度绝对值配置队列使用与避坑

作者头像
陈猿解码
发布2023-02-28 15:02:40
4020
发布2023-02-28 15:02:40
举报
文章被收录于专栏:陈猿解码

【概述】


在yarn中,对于容量调度而言,需要配置不同的队列,并为队列分配不同的资源。然而资源的配置是按照集群总资源的百分比来的,那么,如果集群资源进行扩容,队列的资源也就相应的增加了。在某些场景下, 我们可能希望某些队列的资源是固定的,不随集群资源的扩缩容而变更,这就需要给队列资源配置一个绝对值,在hadoop3.1.0版本中,开始引入了这个功能。本文就来聊聊如何给队列配置绝对值资源,以及一些使用过程中的注意事项。

【配置使用】


配置绝对值资源的队列其实很简单,在原来配置百分比的地方,修改为资源的绝对值即可。例如:

代码语言:javascript
复制
<property>
  <name>yarn.scheduler.capacity.root.bigdata.capacity</name>
  <value>[vcores=60,memory=614400,yarn.io/gpu=0]</value>
</property>

这样,配置的队列就是固定的资源了。

【使用注意事项】


虽然配置比较简单,使用方式和原来相比也没有什么变化,但还是有不少要注意的地方。

1. 根队列下,队列可创建的模式

在根队列("/")下,可以同时创建类型为百分比、绝对值的子队列。

2. 根队列下,队列的容量问题

在根队列下,如果同时创建了百分比、绝对值方式的队列,那么对于百分比队列而言,累加的百分比可以大于100%,但单个队列的百分比值不能超过100%

同样对于绝对值方式的队列,所有队列的资源总和同样可以大于集群的总资源,

但是,如果根队列下只有百分比的队列,那么队列累加的百分比之和还是和之前一样,必须等于100,对于绝对值的队列,也是一样的,非根队列下的子队列,其资源的总和可以大于等于父队列的资源,但不能超过父队列的资源。

3. 子队列的模式

前面说了根队列下的队列可以同时创建百分比、绝对值方式的队列,而在非根队列下的队列,其类型就必须与父队列保持一致,即如果父队列是百分比的,那么子队列也只能是百分比;如果父队列是按绝对值方式配置的,子队列也只能以绝对值的方式进行配置,否则会报类型不匹配的错误,导致队列刷新失败或rm启动失败,例如采用如下配置更新队列:

代码语言:javascript
复制
<property>
  <name>yarn.scheduler.capacity.root.cloudstorage.capacity</name>
  <value>50</value>
</property>
<property>
  <name>yarn.scheduler.capacity.root.cloudstorage.queues</name>
  <value>ceph</value>
</property>
<property>
  <name>yarn.scheduler.capacity.root.cloudstorage.ceph.capacity</name>
  <value>[vcores=60,memory=614400,yarn.io/gpu=0]</value>
</property>

报错信息为:

4. 绝对值队列下创建资源为0的子队列类型问题

动态新增的某个队列不需要了, 这个时候会将队列的资源配置为0,并将队列的状态配置为STOPPED,以停用该队列。

然而由于在绝对值模式的队列下,创建的子队列也只能是以绝对值的方式配置,如果此时将子队列的值设置为0后,刷新队列会报队列的类型与父队列不匹配的错误。

即配置方式为[vcores=0,memory=0,yarn.io/gpu=0]的队列,其类型认为是百分比的模式,父队列如果是绝对值模式的, 那么确实就出现了不匹配的报错。

该问题实际上是一个bug,正确的方式是:配置为0资源的队列其类型与父队列相同。社区有对应的记录,在未来的3.4.0中修复。具体可参考YARN-10364

5. 通过yarnClient获取队里有效资源不正确

通过yarnclient的getEffectiveMinCapacity获取的值与UI界面展示的值不相符,同样这个也是源码中的BUG。赋值的时候搞错了。

注意,当前这个问题仅在trunk分支上修复

以上这些就是使用过程中常见的需要注意的点,除此之外,还有几个小的点,使用的场景也有限,这里简单罗列下,如有需要可详细参考社区的jira单。

1)绝对值配置的队列,maxApplications的值被覆盖

https://issues.apache.org/jira/browse/YARN-10396

2)第三级队列资源计算错误问题

https://issues.apache.org/jira/browse/YARN-8917

【总结】


文章就总结到这里了,看完之后是否还记得应该如何给队列配置绝对值资源,以及使用中有哪些需要注意的地方。此外,是否也还留有一些疑惑的地方,比如root队列下,多个绝对值配置的队列的总资源超过了集群资源,那么该队列使用时实际能占用多少资源,具体是如何计算的等等,这就作为下篇文章的内容,我们下次再聊。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陈猿解码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档