当您在使用火山引擎 E-MapReduce(EMR)集群过程中,如果资源经常出现波峰波谷的情况,您可以使用集群的弹性伸缩功能,实现在计算高峰时,自动扩展一部分临时计算能力,帮助您渡过业务计算高峰;渡过业务高峰后再进行自动缩容,便可以降低您的计算资源使用成本。本文为您介绍弹性伸缩的核心能力及功能使用情况。
在以下场景中,使用 EMR 弹性伸缩功能,可以帮助您节省成本,提高执行效率。
说明
弹性伸缩是否成功,与资源库存、集群运行状态等因素有关。
核心能力 | 说明 |
|---|---|
支持多种伸缩场景 |
|
支持多种伸缩规则 |
|
规则类型 | 适用场景 | 核心配置参数 | 约束校项 |
|---|---|---|---|
定时规则 | 在可预见的、一次性的业务高峰前快速扩充资源。 |
|
|
周期规则 | 应对具有明显规律性潮汐特征的业务。 |
|
|
|
| ||
|
| ||
负载规则 | 在特定时间段内,结合负载情况进行精细化管理。例如,仅在工作日的白天业务高峰时段,才启用基于 YARN 负载的动态伸缩。 |
|
|
时间区间 |
|
| |
| |||
|
弹性伸缩目前仅支持付费类型为按量付费, 支持集群类型与版本如下:
集群类型 | 版本要求 |
|---|---|
Hadoop |
|
Starrocks |
|
集群实例设置中,需先添加 Task 实例。详见创建集群。
说明
在第一次开启节点组弹性伸缩功能的时候,如果您未设置伸缩范围,则系统会将节点组的伸缩范围设置为默认值,默认最小实例数为0,默认最大实例数为30。
在弹性伸缩规则栏,伸缩规则tab页签(默认展示),单击右侧添加伸缩规则按钮即可以添加新的伸缩规则。
详细的字段说明如下:
规则项 | 描述 | 示例值 |
|---|---|---|
规则名称 | 伸缩规则的名称,取值:
| test-policy |
规则项 | 描述 | 示例值 |
|---|---|---|
固定时间点 |
| 2023-02-10 14:54:14 |
每日+区间 | 表示在每天的某个时间段内触发 | 08:00 - 18:00 |
每日+等于 | 表示在每天的某个时间点上触发 | 09:00 |
每周 | 表示每周的某一天触发,可以多选 | 周一、周五 |
每月+区间 | 表示每月的某一连续日期触发 | 10 - 22日 |
每月+等于 | 表示每月的某一天触发,支持选最后一天或第一天 | 最后一天 |
数值类型 | 某一项指标超过阈值的情况,在某一时间段内发生的次数超过所设定的次数时,则触发。指标的采样间隔为半分钟。 | Yarn 可用核数: |
规则项 | 描述 | 示例值 |
|---|---|---|
重试时间 | 重试时间仅适用于基于时间触发的伸缩规则。当规则到达指定触发时间但因冷却中、其他扩缩容进行中、库存不足等原因无法立即执行时,EMR 将在设定的重试时间内每隔 30 秒自动重试一次,直到条件满足并执行伸缩动作,或超过重试时间后放弃本次执行。设置范围:30~3600秒,缺省值:360秒。 | 360秒 |
条件类型 | 数据源 | 指标code | 源生指标 | 指标名 | 单位 |
|---|---|---|---|---|---|
数值 | YARN | AvailableVCores | availableVirtualCores | Yarn可用核数 | core |
数值 | YARN | AvailableMemory | availableMB | Yarn可用内存 | GB |
数值 | YARN | AppsRunning | appsRunning | Yarn运行任务数 | 个 |
数值 | YARN | AppsPending | appsPending | Yarn排队任务数 | 个 |
数值 | YARN | MemoryAvailablePrecentage | availableMB/totalMB | Yarn可用内存比例 | % |
数值 | YARN | VCoresAvailablePrecentage | availableVirtualCores/totalVirtualCores | Yarn可用核数比例 | % |
数值 | YARN | AppsPendingRatio | appsPending/(appsSubmitted + appsPending + appsRunning) | Yarn排队任务比例 | % |
数值 | YARN | AppsKilled | appsKilled | Yarn中止任务数 | 个 |
数值 | YARN | AppsFailed | appsFailed | Yarn失败任务数 | 个 |
数值 | YARN | AppsCompleted | appsCompleted | Yarn完成任务数 | 个 |
数值 | YARN | AppsSubmitted | appsSubmitted | Yarn提交任务数 | 个 |
规则名称和触发条件填写完成后,单击确定按钮,完成伸缩规则添加。
伸缩规则添加成功后,您可对添加成功的伸缩规则进行以下管理操作。
单击操作列中的编辑或删除按钮,可以对伸缩规则进行编辑或删除操作。
若规则已经绑定节点组且节点组开启弹性伸缩,则该规则处于生效中状态,生效中的规则不支持编辑、删除,对应按钮将置灰显示,鼠标悬浮到编辑或删除按钮时,将提示不可操作原因。
注意
当伸缩规则触发某个节点组(或多个节点组)产生了扩缩容动作,在扩缩容完成后的一段时间内,将会拒绝该节点组由伸缩规则所触发的扩缩容动作,该段时间称之为冷却时间,是为了防止出现在某些情况下节点组快速且频繁的扩缩容,而造成集群的不稳定场景。
注意
该冷却时间只对弹性伸缩规则生效,不对手动行为生效,即在冷却时间内,手动扩缩容功能不受影响。
在可用弹性伸缩节点组栏,单击右侧操作列中关联规则左侧按钮,为节点组开启关联弹性伸缩规则。
单击关联规则页面操作列中的绑定按钮,可以绑定该规则到当前节点组上。
绑定时需绑定时需要配置以下内容:
伸缩行为
参数 | 说明 |
|---|---|
新增实例数 | 按台数增加 |
新增实例百分比 | 根据规则触发时,实例数的百分比来计算新增台数,向上取整,如果当时的实例数为0,则按1处理。 |
减少实例数 | 按台数减少 |
减少实例百分比 | 根据规则触发时,实例数的百分比来计算减少台数,向下取整。 |
自动添加资源池标签
状态 | 说明 | 前提条件 |
|---|---|---|
开启 | 开启自动添加资源池标签后,可选择目标资源池标签,系统将自动为弹性扩容的节点关联该资源池。 | 开启资源池管理,详见YARN 资源池管理 |
关闭 | 弹性扩容节点不会关联资源池标签。 | 不涉及 |
绑定规则后,您可以通过单击伸缩行为列中的编辑图标按钮进行伸缩行为的调整。
注意
单次最多可以调整的实例个数不允许超过30。
单击关联规则按钮,可进入关联规则页面,可以看到当前集群下的所有已添加的规则。
关联规则页面中,可以看到当前集群下的所有已添加的规则。
若规则较多时,您可以勾选“仅查看已绑定的规则”或在右侧的搜索框里输入规则名称来进行快速检索。
说明
若集群下还没有规则,可以单击添加规则按钮,快速链接跳转到添加规则页面,进行添加伸缩规则。详见添加伸缩规则。
单击伸缩规则 tab 页签右侧的历史记录,可以查看集群的弹性伸缩记录。在历史记录中,您可进行以下操作:
可通过勾选已命中触发条件来快速筛选历史记录,默认为已勾选。
可在搜索框里面输入规则名称, 来筛选所关注的规则触发与执行情况,支持模糊查询。
可在时间搜索框里输入起始与终止时间进行查询,系统默认时间范围为距离当前时间近一天。
还可以通过伸缩状态列右侧的筛选漏斗按钮进行筛选记录。具体状态说明如下表:
状态 | 描述 |
|---|---|
执行中 | 弹性伸缩活动正在执行。 |
全部成功 | 根据伸缩规则与绑定信息,所有伸缩的节点,均被加入或移出对应的节点组。 |
部分成功 | 只有在扩容时才会发生,因为受 ECS 或云盘库存的影响,只有部分节点执行成功。 |
全部失败 | 根据伸缩规则,没有一个节点被加入或移出集群。 |
拒绝 | 当运行伸缩规则后的实例数大于最大实例数或者小于最小实例数时,或者当运行规则触发时该节点组的上一次伸缩活动还未结束,则会拒绝该规则运行。 |
异常 | 只有在缩容时才会发生,当 ECS、云盘或计费模块等服务异常时,组件已经下线,但节点未能移除,此时,该伸缩组状态会锁定为缩容中,不能进行节点变动的操作,需要您尽快联系我们进行处理,以免受到损失。 |
点击命中触发条件列中的查看按钮,可以结合历史指标值查看负载类规则的触发情况。