扩容规则执行时预设资源添加原则
每个集群最多可配置5种伸缩规格,扩容规则触发时将根据规格优先级进行扩容,当高优先级规格数量不足时,由次优先级资源规格混合高优先级规格进行扩容补充计算资源(按量计费和竞价实例执行顺序相同)。
当资源充足时: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节点。
缩容规则执行时弹性节点缩容原则
自动伸缩功能扩容出的弹性节点,当缩容规则触发时,将根据“先扩后缩,后扩先缩”原则执行;非弹性节点将不受缩容规则触发而触发缩容动作,非弹性节点仅支持手动缩容。
注意
定时销毁节点将不受“先扩后缩,后扩先缩”和集群“最小节点数”原则约束;时间到达即可执行缩容,且默认优雅缩容2小时范围。
缩容方式:支持选择:节点、内存、核数三种方式;三种方式仅支持整数非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 自动伸缩指标 | 指标含义 |
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 队列已分配的内存量 |
AllocatedMB | 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 队列等待可用的内存百分比 |
?