伸缩规则触发执行原则

最近更新时间:2024-08-06 15:45:21

我的收藏

扩容规则执行时预设资源添加原则

每个集群最多可配置10种伸缩规格,扩容规则触发时将根据规格优先级进行扩容,当高优先级规格数量不足时,由次优先级资源规格混合高优先级规格进行扩容补充计算资源(按量计费和竞价实例执行顺序相同)。
当资源充足时:1>2>3>4>5
例如
预设5种规格且资源充足,当扩容规则触发需要扩容10台节点时,按照顺序规格1扩容10台节点,其余预设规格不选择。
当资源不足时:1+2>1+2+3>1+2+3+4>1+2+3+4+5
例如
预设规格1有8台节点,规格2有4台节点,规格3有3台节点,当扩容规则触发需要扩容13台节点时,按照顺序规格1扩容8台节点,规格2扩容4台,规格3扩容1台节点。
当资源规格无货时,假设规格2无货:1+3>1+3+4>1+3+4+5
例如
预设规格1有8台节点,规格2没货没有节点,规格3有3台节点,当扩容规则触发需要扩容10台节点时,按照顺序规格1扩容8台节点,规格2不选,规格3扩容2台节点。
预设规格1有8台节点,其余预设规格均无货,当扩容规则触发,需要扩容10台节点时,扩容规则将会触发,并扩容规格1扩容8台节点,扩容部分成功。
扩容方式:支持选择:节点、内存、核数三种方式;三种方式仅支持整数非0值输入。当方式选择核数和内存时,扩容保证最大算力进行扩容节点数量换算。
例如
按核数扩容,设置扩容10核,但规格按优先顺序扩容规格为8核时,规则触发将扩容2台8核节点
按内存扩容,设置扩容20G,但规格按优先顺序扩容规格为16G时,规则触发将扩容2台16G节点

缩容规则执行时弹性节点缩容原则

自动伸缩功能扩容出的弹性节点,当缩容规则触发时:按时间缩容,将优先缩容空闲节点,根据“先扩后缩,后扩先缩”原则执行,不足缩容数量时,再选择缩容运行 container 的节点;按负载缩容,优先缩容部署了负载指标所属服务的节点,且优先缩容空闲节点,根据“先扩后缩,后扩先缩”原则执行,不足缩容数量时,再选择缩容运行 container 的节点。非弹性节点将不受缩容规则触发而触发缩容动作,非弹性节点仅支持手动缩容。
注意
定时销毁节点将不受“先扩后缩,后扩先缩”和集群“最小节点数”原则约束;时间到达即可执行缩容,且默认优雅缩容30分钟范围。
空闲节点的判断依据为5分钟内无正在运行的 container。
按负载缩容,假设节点创建时间从早到晚A>B>C>D>E。
例如:
设置 YARN 负载指标缩容,缩容5台节点,C、D、E部署了 YARN 组件,且D、E正在运行 container,当缩容规则触发时,缩容顺序为:C>E>D>B>A。
设置 Trino 负载指标缩容,缩容5台节点,C、D、E部署了 Trino 组件,且D、B正在运行 container,当缩容规则触发时,缩容顺序为:E>C>D>A>B。
按时间缩容,假设节点创建时间从早到晚A>B>C>D>E。
例如:
按节点缩容,设置缩容5台节点,D、E正在运行 container,当缩容规则触发时,缩容顺序为:C>B>A>E>D。
缩容方式:支持选择:节点、内存、核数三种方式;三种方式仅支持整数非0值输入当方式选择核数和内存时,缩容保证业务正常按最小台数进行缩容节点数量换算,节点无任务运行时按时间倒序缩容且保证最少一台缩容。
例如
按核数缩容,设置缩容20核,缩容规则触发时,按时间倒序集群存在弹性节点分别为3台8核16G节点和2台4核8G节点,将成功缩容2台8核16G节点。
按内存缩容,设置缩容30G,缩容规则触发时,按时间倒序集群存在弹性节点分别为3台8核16G节点和2台4核8G节点,将成功缩容1台8核16G节点。

伸缩规则触发顺序执行原则

支持时间伸缩和负载伸缩混合弹性规则设置,规则触发遵循“先触发先执行,同时触发根据规则优先顺序执行”;规则状态用于标记规则是否开启,默认为开启状态,当不需要规则运行但仍想保留规则配置时可将规则状态设置为关闭。
仅按负载进行伸缩设置
1.1 遵循“先触发先执行,同时触发根据规则优先顺序执行”,如:1>2>3>4>5
1.2 单条负载伸缩规则支持设置多指标,当所有指标都符合条件时触发规则。
1.3 支持指定时间段内监控集群负载变化,设置负载伸缩生效。
仅按时间进行伸缩设置
1.1 遵循“先触发先执行,同时触发根据规则优先顺序执行”,如:1>2>3>4>5
1.2 重复执行规则,若规则到期后,规则状态将失效并处于关闭状态;到期前将有告警通知,详情请参见 告警配置
按负载和时间混合进行伸缩设置 遵循“先触发先执行,同时触发根据规则优先顺序执行”,如:1>2>3>4>5

队列负载指标对应关系

负载类型
类别
维度
EMR 自动伸缩指标
指标含义
YARN
AvailableVCores
root
AvailableVCores#root
Root 队列可用虚拟核数的数量
root.default
AvailableVCores#root.default
root.default 队列可用虚拟核数的数量
自定义子队列
如:AvailableVCores#root.test
root.test 队列可用虚拟核数的数量
PendingVCores
root
PendingVCores#root
Root 队列等待可用的虚拟核数
root.default
PendingVCores#root.default
root.default 队列等待可用的虚拟核数
自定义子队列
如:PendingVCores#root.test
root.test 队列等待可用的虚拟核数
AvailableMB
root
AvailableMB#root
Root 队列可用内存数量(MB)
root.default
AvailableMB#root.default
root.default 队列可用内存数量(MB)
自定义子队列
如:AvailableMB#root.test
root.test 队列可用内存数量(MB)
PendingMB
root
PendingMB#root
Root 队列等待可用的内存数量(MB)
root.default
PendingMB#root.default
root.default 队列等待可用的内存数量(MB)
自定义子队列
如:PendingMB#root.test
root.test 队列等待可用的内存数量(MB)
AvailableMemPercentage
集群
AvailableMemPercentage
剩余内存的百分比
ContainerPendingRatio
集群
ContainerPendingRatio
待分配的容器数与已分配的容器数的比率
AppsRunning
root
AppsRunning#root
Root 队列运行中的任务数
root.default
AppsRunning#root.default
root.default 队列运行中的任务数
自定义子队列
如:AppsRunning#root.test
root.test 队列运行中的任务数
AppsPending
root
AppsPending#root
Root 队列挂起的任务数
root.default
AppsPending#root.default
root.default 队列挂起的任务数
自定义子队列
如:AppsPending#root.test
root.test 队列挂起的任务数
PendingContainers
root
PendingContainers#root
Root 队列待分配的容器数
root.default
PendingContainers#root.default
root.default 队列待分配的容器数
自定义子队列
如:PendingContainers#root.test
root.test 队列待分配的容器数
AllocatedMB
root
AllocatedMB#root
Root 队列已分配的内存量
root.default
AllocatedMB#root.default
root.default 队列已分配的内存量
自定义子队列
如:AllocatedMB#root.test
root.test 队列已分配的内存量
AllocatedVCores
root
AllocatedVCores#root
Root 队列已分配的虚拟核数
root.default
AllocatedVCores#root.default
root.default 队列已分配的虚拟核数
自定义子队列
如:AllocatedVCores#root.test
root.test 队列已分配的虚拟核数
ReservedVCores
root
ReservedVCores#root
Root 队列预留的虚拟核数
root.default
ReservedVCores#root.default
root.default 队列预留的虚拟核数
自定义子队列
如:ReservedVCores#root.test
root.test 队列预留的虚拟核数
AllocatedContainers
root
AllocatedContainers#root
Root 队列已分配的容器数
root.default
AllocatedContainers#root.default
root.default 队列已分配的容器数
自定义子队列
如:AllocatedContainers#root.test
root.test 队列已分配的容器数
ReservedMB
root
ReservedMB#root
Root 队列预留的内存量
root.default
ReservedMB#root.default
root.default 队列预留的内存量
自定义子队列
如:ReservedMB#root.test
root.test 队列预留的内存量
AppsKilled
root
AppsKilled#root
Root 队列终止的任务数
root.default
AppsKilled#root.default
root.default 队列终止的任务数
自定义子队列
如:AppsKilled#root.test
root.test 队列终止的任务数
AppsFailed
root
AppsFailed#root
Root 队列失败的任务数
root.default
AppsFailed#root.default
root.default 队列失败的任务数
自定义子队列
如:AppsFailed#root.test
root.test 队列失败的任务数
AppsCompleted
root
AppsCompleted#root
Root 队列完成的任务数
root.default
AppsCompleted#root.default
root.default 队列完成的任务数
自定义子队列
如:AppsCompleted#root.test
root.test 队列完成的任务数
AppsSubmitted
root
AppsSubmitted#root
Root 队列提交的任务数
root.default
AppsSubmitted#root.default
root.default 队列提交的任务数
自定义子队列
如:AppsSubmitted#root.test
root.test 队列提交的任务数
AvailableVCoresPercentage
集群
AvailableVCoresPercentage
集群内可用虚拟核数百分比
MemPendingRatio
root
MemPendingRatio#root
Root 队列等待可用的内存百分比
root.default
MemPendingRatio#root.default
root.default 队列等待可用的内存百分比
自定义子队列
如:MemPendingRatio#root.test
root.test 队列等待可用的内存百分比
Trino
FreeDistributed
集群
FreeDistributed
集群可用 Distributed 内存
QueuedQueries
集群
QueuedQueries
队列中等待执行的查询总数