💡
原文中文,约3300字,阅读约需8分钟。
📝
内容提要
本文介绍了Capacity调度器的核心类及资源分配机制,包括异步调度器的初始化、节点状态判断和资源分配方式(按节点和标签分配)。在调度过程中,节点需处于RUNNING状态且心跳未超时,才能进行资源分配,优先处理运行时预留资源,以确保资源充足。
🎯
关键要点
-
Capacity调度器的核心类是CapacityScheduler,初始化时会设置调度器相关属性。
-
异步调度器线程AsyncScheduleThread支持多线程调度,核心函数为schedule。
-
节点在心跳超时或不处于RUNNING状态时不会被分配资源,相关判断由shouldSkipNodeSchedule函数实现。
-
资源分配方式包括按节点和按标签分配,按节点分配时优先从随机生成的起始点开始分配。
-
资源分配的核心实现函数为allocateContainersToNode,优先处理运行时预留资源。
-
在资源不足时,不会进行资源分配或预留,相关实现由allocateOrReserveNewContainers函数负责。
❓
延伸问答
Capacity调度器的核心类是什么?
Capacity调度器的核心类是CapacityScheduler。
异步调度器线程的主要功能是什么?
异步调度器线程AsyncScheduleThread的核心功能是循环调度,主要通过schedule函数实现。
节点在什么情况下不会被分配资源?
节点在心跳超时或不处于RUNNING状态时不会被分配资源。
资源分配的方式有哪些?
资源分配方式包括按节点分配和按标签分配。
如何优先处理运行时预留资源?
在资源分配时,allocateContainersToNode函数会优先检查并处理运行时预留的资源。
在资源不足时会发生什么?
在资源不足时,不会进行资源分配或预留,相关实现由allocateOrReserveNewContainers函数负责。
➡️