您的位置:  首页 > 技术杂谈 > 正文

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

2022-06-28 12:00 https://my.oschina.net/hncscwc/blog/5545849 hncscwc 次阅读 条评论

【概述】

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

【配置使用】

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

<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启动失败,例如采用如下配置更新队列:

<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队列下,多个绝对值配置的队列的总资源超过了集群资源,那么该队列使用时实际能占用多少资源,具体是如何计算的等等,这就作为下篇文章的内容,我们下次再聊。

 

好了,这就是本文的全部内容,如果觉得本文对您有帮助,不要吝啬点赞在看转发,也欢迎加我微信交流~

 

本文分享自微信公众号 - hncscwc(gh_383bc7486c1a)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
  • 0
    感动
  • 0
    路过
  • 0
    高兴
  • 0
    难过
  • 0
    搞笑
  • 0
    无聊
  • 0
    愤怒
  • 0
    同情
热度排行
友情链接