yarn创建子队列,子队列出现超配的问题

背景

由于业务需求,需要新增一个子队列transfer,总资源:Vcore=192  Mem=320G,队列规划如下:

 

根据配置文件中的属性,transfer 队列的容量为 30%。集群总共有 192 个 vcore 和 320 GB 内存。

对于 vcore,最大可分配数量为:

vcore_limit = (total_vcore * transfer_queue_capacity) / 100 = (192 * 30) / 100 = 57.6

因为 vcore 必须是整数,所以最大可分配的 vcore 为 57。

对于内存,最大可分配数量为:

mem_limit = (total_mem * transfer_queue_capacity) / 100 = (320 * 30) / 100 = 96

因此,在 transfer 队列条件允许的情况下,最大可分配的 vcore 为 57,内存为 96 GB。

问题

研发任务运行在transfer队列,出现资源超配的现象,导致资源瞬间占满,如图

 

根据之前的计算,transfer 队列中最大可分配的 vcore 为 57,而实际 running containers 数量为 95,AllocateaCpu Vcore 为 95,这意味着资源利用率超过了 transfer 队列的配置限制。因此,存在资源超配的情况。

解决方案

在yarn-site下新增 yarn.scheduler.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DominantResourceCalculator
该参数用于比较调度器中的资源的ResourceCalculator实现。
默认的即org.apache.hadoop.yarn.util.resource.DefaultResourseCalculator只使用内存,而DominantResourceCalculator 用 Dominant-resource比较多维度资源,如内存,CPU等等
这样修改后重启resourmanger 观察是否正常

 

同类参考连接:https://blog.csdn.net/CPP_MAYIBO/article/details/100813294

 

posted @ 2024-02-21 15:07  Linux_Boy  阅读(28)  评论(0编辑  收藏  举报