当前位置: 首页 > 科技观察

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

时间:2023-03-23 12:17:18 科技观察

在yarn中,容量调度需要配置不同的队列,为队列分配不同的资源。但是,资源分配是基于集群总资源的百分比。那么,如果集群资源扩大,队列的资源也会相应增加。在某些场景下,我们可能希望某些队列的资源是固定的,不随着集群资源的扩缩而变化。这就需要为队列资源配置一个绝对值。在hadoop的3.1.0版本中,引入了这个Function。本文将讲一下如何为队列配置绝对值资源,以及使用过程中的一些注意事项。配置一个使用资源绝对值的队列其实很简单。在原来的配置百分比中,可以改为资源的绝对值。例如:yarn.scheduler.capacity.root.bigdata.capacity[vcores=60,memory=614400,yarn.io/gpu=0]/property>这样配置的队列就是一个固定的资源。使用注意事项虽然配置比较简单,使用方式也比原来没有太大变化,但还是有很多需要注意的地方。1.根队列下,可以创建队列的模式在根队列(“/”)下,可以同时创建百分比类型和绝对值类型的子队列。2.根队列下,队列的容量在根队列下。如果同时创建百分比和绝对值队列,那么对于百分比队列,累计百分比可以大于100%,但是单个队列的百分比值不能超过100%同样对于绝对值模式的队列,所有队列的资源总和也可以大于集群的总资源。但是,如果根队列下只有百分比队列,则队列累计百分比之和还是和以前一样,必须等于100。绝对值队列也是如此。非根队列下子队列的资源总和可以大于等于父队列的资源,但不能超过父队列的资源。3.子队列的模式上面提到根队列下的队列可以同时创建百分比和绝对值形式的队列,非根队列下的队列类型必须一致与父队列,即如果父队列是百分比,那么子队列只能是百分比;如果父队列是绝对值配置的,那么子队列只能是绝对值配置,否则会报类型不匹配的错误,导致队列刷新失败或者rm启动失败,例如使用如下配置更新队列:yarn.scheduler.capacity.root.cloudstorage.capacity50yarn.scheduler.capacity.root。cloudstorage.queuescephyarn.scheduler.capacity.root.cloudstorage.ceph.capacity[vcores=60,memory=614400,yarn.io/gpu=0]报错信息为:4.在绝对值队列下创建资源0的子队列类型问题。动态添加当不再需要某个队列时,会将队列的资源配置为0,并将队列的状态配置为STOPPED,以停用该队列。但是在绝对值模式的队列下,创建的子队列只能以绝对值的形式进行配置。如果此时子队列的值设置为0,刷新队列会报队列类型与父队列不匹配。错误。也就是说,如果配置模式为[vcores=0,memory=0,yarn.io/gpu=0],则其类型被认为是百分比模式。如果父队列是绝对值模式,那么确实会出现不匹配的错误。.这个问题其实是一个bug,正确的做法是:配置0资源的队列和父队列有相同的类型。社区有相应记录,以后3.4.0修复。详情请参考YARN-103645。通过yarnClient获取团队中的有效资源是不正确的。yarnclient的getEffectiveMinCapacity获取的值与UI界面显示的值不匹配。这也是源代码中的错误。我在赋值时犯了一个错误。请注意,此问题目前仅在trunk分支上修复。以上就是在使用过程中需要注意的常见点。此外,还有一些小问题,使用场景有限。这是一个简短的列表。如有需要,可以参考社区的jira列表了解详情。(1)对于配置绝对值的队列,maxApplications的值被覆盖https://issues.apache.org/jira/browse/YARN-10396(2)三级队列资源计算错误问题https://issues.apache.org/jira/browse/YARN-8917总结文章总结到这里。看完你还记得如何为队列配置绝对值资源,使用过程中需要注意哪些点吗。另外是否还有一些疑惑,比如在根队列下,配置多个绝对值的队列总资源超过集群资源,那么这个队列在使用时实际能占用多少资源,如何计算等等,这将是下一篇文章的内容,我们下次再说。