一、扩容规则执行时预设资源添加原则
·当资源充足时: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
注意:例如
扩容方式:支持选择:节点、内存、核数三种方式;三种方式仅支持整数非0值输入。当方式选择核数和内存时,扩容保证最大算力进行扩容节点数量换算。
注意:例如
二、开启尽力交付时弹性节点扩容原则
自动扩容在高峰下单时可能由于资源争抢导致实际扩容机器数量达不到弹性目标数量,当你开启尽力交付策略后,如果配置的伸缩规格资源充足,系统会自动重试申请资源,直到满足或接近目标数量。
·预设资源规格优先级:1>2>3>4>5。假设预设规格1有8台节点,规格2有2台节点,规格3有6台节点,规格4有6台节点。
注意:例如:
三、缩容规则执行时弹性节点缩容原则
自动伸缩功能扩容出的弹性节点,当缩容规则触发时:按时间缩容,将优先缩容空闲节点,根据“先扩后缩,后扩先缩”原则执行,不足缩容数量时,再选择缩容运行 container 的节点;按负载缩容,优先缩容部署了负载指标所属服务的节点,且优先缩容空闲节点,根据“先扩后缩,后扩先缩”原则执行,不足缩容数量时,再选择缩容运行 container 的节点。非弹性节点将不受缩容规则触发而触发缩容动作,非弹性节点仅支持手动缩容。
·按负载缩容,假设节点创建时间从早到晚 A>B>C>D>E。
注意:例如:
·按时间缩容,假设节点创建时间从早到晚 A>B>C>D>E。
注意:例如:
缩容方式:支持选择:节点、内存、核数三种方式;三种方式仅支持整数非0值输入。当方式选择核数和内存时,缩容保证业务正常按最小台数进行缩容节点数量换算,节点无任务运行时按时间倒序缩容。
注意:例如
四、伸缩规则触发顺序执行原则
支持时间伸缩和负载伸缩混合弹性规则设置,规则触发遵循“先触发先执行,同时触发根据规则优先顺序执行”;规则状态用于标记规则是否开启,默认为开启状态,当不需要规则运行但仍想保留规则配置时可将规则状态设置为关闭。
·仅按负载进行伸缩设置
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。
五、队列负载指标对应关系
负载伸缩支持的集群类型、组件及版本信息如下:
·Hadoop 集群:
·YARN 组件:Node Label 仅支持 EMR-V3.x 及以上版本。
·Trino 组件:仅支持 EMR-V2.7.0和 EMR-V3.40及以上版本。
·Ray 集群:Uniffle 组件。
·StarRocks 集群:StarRocks 组件。
| 负载类型 | 类别 | 维度 | EMR 自动伸缩指标 | 指标含义 |
| YARN | AvailableVCores | root | AvailableVCores#root | root 队列可用虚拟核数的数量 |
| | | root.default | AvailableVCores#root.default | root.default 队列可用虚拟核数的数量 |
| | | 自定义子队列 | 如:AvailableVCores#root.test | root.test 队列可用虚拟核数的数量 |
| | | Node Label | 如:AvailableVCores#Node Label.test | test 标签下可用虚拟核数的数量 |
| | PendingVCores | root | PendingVCores#root | root 队列等待可用的虚拟核数 |
| | | root.default | PendingVCores#root.default | root.default 队列等待可用的虚拟核数 |
| | | 自定义子队列 | 如:PendingVCores#root.test | root.test 队列等待可用的虚拟核数 |
| | | Node Label | 如:PendingVCores#Node Label.test | test 标签下等待可用的虚拟核数 |
| | AvailableMB | root | AvailableMB#root | root 队列可用内存数量(MB) |
| | | root.default | AvailableMB#root.default | root.default 队列可用内存数量(MB) |
| | | 自定义子队列 | 如:AvailableMB#root.test | root.test 队列可用内存数量(MB) |
| | | Node Label | 如:AvailableMB#Node Label.test | test 标签下可用内存数量(MB) |
| | PendingMB | root | PendingMB#root | root 队列等待可用的内存数量(MB) |
| | | root.default | PendingMB#root.default | root.default 队列等待可用的内存数量(MB) |
| | | 自定义子队列 | 如:PendingMB#root.test | root.test 队列等待可用的内存数量(MB) |
| | | Node Label | 如:PendingMB#Node Label.test | 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 队列已分配的内存量 |
| | | Node Label | 如:AllocatedMB#Node Label.test | test 标签下已分配的内存量 |
| | AllocatedVCores | root | AllocatedVCores#root | root 队列已分配的虚拟核数 |
| | | root.default | AllocatedVCores#root.default | root.default 队列已分配的虚拟核数 |
| | | 自定义子队列 | 如:AllocatedVCores#root.test | root.test 队列已分配的虚拟核数 |
| | | Node Label | 如:AllocatedVCores#Node Label.test | test 标签下已分配的虚拟核数 |
| | ReservedVCores | root | ReservedVCores#root | root 队列预留的虚拟核数 |
| | | root.default | ReservedVCores#root.default | root.default 队列预留的虚拟核数 |
| | | 自定义子队列 | 如:ReservedVCores#root.test | root.test 队列预留的虚拟核数 |
| | | Node Label | 如:ReservedVCores#Node Label.test | 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 队列预留的内存量 |
| | | Node Label | 如:ReservedMB#Node Label.test | 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 队列等待可用的内存百分比 |
| | usageRatioVCores | root | usageRatioVCores#root | root 队列 CPU 资源的使用率 |
| | | root.default | usageRatioVCores#root.default | root.default 队列 CPU 资源的使用率 |
| | | 自定义子队列 | 如:usageRatioVCores#root.test | root.test 队列 CPU 资源的使用率 |
| | usageRatioMem | root | usageRatioMem#root | root 队列内存资源的使用率 |
| | | root.default | usageRatioMem#root.default | root.default 队列内存资源的使用率 |
| | | 自定义子队列 | 如:usageRatioMem#root.test | root.test 队列内存资源的使用率 |
| Trino | FreeDistributed | 集群 | FreeDistributed | 集群可用 Distributed 内存 |
| | QueuedQueries | 集群 | QueuedQueries | 队列中等待执行的查询总数 |
| StarRocks | CNUsedVCores | 集群 | CNUsedVCores | 集群中所有 CN 节点已使用虚拟核数的数量 |
| | | 计算组 | | 指定计算组中所有 CN 节点已使用虚拟核数的数量 |
| | CNUsedMB | 集群 | CNUsedMB | 集群中所有 CN 节点已使用内存数量(MB) |
| | | 计算组 | | 指定计算组中所有 CN 节点已使用内存数量(MB) |
| | CNUsedVCoresPercentage | 集群 | CNUsedVCoresPercentage | 集群中所有 CN 节点 CPU 使用率 |
| | | 计算组 | | 指定计算组中所有 CN 节点 CPU 使用率 |
| | CNUsedMBPercentage | 集群 | CNUsedMBPercentage | 集群中所有 CN 节点内存使用率 |
| | | 计算组 | | 指定计算组中所有 CN 节点内存使用率 |
| Uniffle | DataDiskUsedPercentage | 集群 | DataDiskUsedPercentage | shuffle server 的数据盘空间平均使用率 |
| | DataDiskIOPercentage | 集群 | DataDiskIOPercentage | shuffle server 的数据盘 IO 设备平均使用率 |