Capacity
This commit is contained in:
parent
a4d7a59eaa
commit
2296c26713
@ -1,16 +1,18 @@
|
||||
|
||||
# 简介
|
||||
# 一、简介
|
||||
|
||||

|
||||
|
||||
# 源码解析
|
||||
# 二、源码解析
|
||||
|
||||
Capacity 调度器的核心类是CapacityScheduler。在初始化CapacityScheduler的时候,在构造函数initAsyncSchedulingProperties,里面会初始化调度器相关。
|
||||
核心类是AsyncSchedulingConfiguration,主要内容总结为:初始化异步调度器线程AsyncScheduleThread,可以初始化多个,调度支持多线程。
|
||||
|
||||
AsyncScheduleThread继承自Thread,核心是循环调度,调度的核心函数为schedule。
|
||||
|
||||
## schedule函数
|
||||
## 1、异步调度
|
||||
|
||||
### 1.1 schedule函数
|
||||
|
||||
一般情况下,满足下面条件的节点不会被分配资源:
|
||||
- 心跳超时的节点,心跳超时的节点一般认为是可能已经dead了。为了可靠性考虑,不给此类节点分配Container。
|
||||
@ -18,14 +20,14 @@ AsyncScheduleThread继承自Thread,核心是循环调度,调度的核心函
|
||||
|
||||
上述判断的核心实现函数为shouldSkipNodeSchedule。
|
||||
|
||||
## 资源分配方式
|
||||
### 1.2 资源分配方式
|
||||
|
||||
资源分配方式分为:
|
||||
- 按照节点分配资源
|
||||
- 按照标签进行分配
|
||||
|
||||
|
||||
#### 按照节点分配资源
|
||||
#### 1.2.1 按照节点分配资源
|
||||
|
||||
- 随机产生一个随机数,范围是0 ~ allNode.size。
|
||||
- 优先从下标为[start, end)的节点中分配资源。
|
||||
@ -60,7 +62,7 @@ for (FiCaSchedulerNode node : nodes) {
|
||||
}
|
||||
```
|
||||
|
||||
#### 按照标签进行分配
|
||||
#### 1.2.2 按照标签进行分配
|
||||
|
||||
|
||||
- 随机产生一个随机数,范围是0 ~ partitions.size。
|
||||
@ -100,14 +102,17 @@ for (String partition : partitions) {
|
||||
}
|
||||
```
|
||||
|
||||
## 资源分配具体实现
|
||||
## 2、同步调度
|
||||
|
||||
|
||||
## 3、资源分配具体实现
|
||||
|
||||
资源分配的核心实现函数为allocateContainersToNode。首先检查当前节点是否存在运行时预留的资源,优先处理运行时预留资源。
|
||||
|
||||
### 运行时预留
|
||||
## 4、运行时预留
|
||||
|
||||
|
||||
### 资源分配
|
||||
## 5、资源分配
|
||||
|
||||
对于可用资源和可kill的资源加和小于最小资源的时候,不会再进行资源分配或者资源预留了,因为资源肯定是不足的。
|
||||
|
||||
@ -140,7 +145,7 @@ assignment.setSchedulingMode(SchedulingMode.IGNORE_PARTITION_EXCLUSIVITY);
|
||||
submitResourceCommitRequest(getClusterResource(), assignment);
|
||||
```
|
||||
|
||||
#### assignContainers
|
||||
### 5.1 assignContainers
|
||||
|
||||
根队列的实现类为AbstractParentQueue.java。低版本的实现类为ParentQueue.java
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user