弹性伸缩(Auto Scaling),是根据您的业务需求和策略,自动调整集群计算资源的管理服务。
当您在使用火山引擎 E-MapReduce(EMR)集群过程中,如果资源经常出现波峰波谷的情况,那么在计算高峰时,自动扩展一部分临时计算能力,帮助您渡过业务计算高峰;渡过业务高峰后再进行自动缩容,便可以降低您的计算资源使用成本。本文为您介绍弹性伸缩的核心能力及功能使用情况。
在以下场景中,使用 EMR 弹性伸缩功能,可以帮助您节省成本,提高执行效率。
业务计算负载曲线有明显的波峰波谷情况。
你对业务非常熟悉,可以规划固定时间段内集群的计算能力,使之满足业务需求的同时,还可以节省成本。
为确保重要作业按时完成,需要在某一时间段内按照某些负载指标扩充节点。
弹性伸缩目前以白名单形式开放,您可通过提工单的方式,咨询 EMR 支持人员进行开通。
弹性伸缩目前仅支持付费类型为按量付费, 支持集群类型与版本如下:
集群类型 | 版本要求 |
---|---|
Hadoop | >= EMR-2.0.1 |
Starrocks | >= EMR-3.5 |
详见创建集群。
核心能力 | 说明 |
---|---|
支持多种伸缩场景 |
|
支持多种伸缩策略 |
|
采样间隔
负载指标值的采集,一般是通过指标监控服务(比如 prometheus)在集群端进行固定频率的采样与收集,我们把相邻两次采样之间的间隔时间段叫做采样间隔,该值固定为30秒。
轮询间隔
管控端对各集群采集到的指标值进行简单轮询,相邻两次轮询之间的间隔时间叫做轮询间隔,该值固定为5分钟。根据上面的采样间隔值很容易算出,一个轮询查询到的某一负载指标的值共有10条。
登录 EMR 控制台。
从左侧导航栏中,进入集群列表 > 集群名称详情 > 弹性伸缩页签。
若集群有满足条件的 Task 节点组时,在可用弹性伸缩节点组栏,可以看到该集群所有可用的弹性伸缩节点组列表。您可执行以下操作:
在最右侧操作列中,单击开启或关闭按钮,控制节点组弹性伸缩功能的状态。
在弹性伸缩范围列中,显示节点组实例数的限制范围,单击编辑按钮,设置弹性伸缩的最大与最小实例数范围。最小与最大实例数的设置只对弹性伸缩生效,对于手动扩容或缩容不具有约束作用。其作用为:
最大实例数设置的作用:扩容规则生效时,如果扩容后的实例数量超过上限,则该次扩容动作将被拒绝执行,以保证伸缩组内的实例数量不超过最大实例数上限
最小实例数设置的作用:缩容规则生效时,如果缩容后的实例数量低于下限,则该次缩容动作将被拒绝执行,以保证伸缩组内的实例数量不低于最小实例数下限。
说明
在第一次开启节点组弹性伸缩功能的时候,如果您未设置伸缩范围,则系统会将节点组的伸缩范围设置为默认值,默认最小实例数为0,默认最大实例数为30。
每个集群的伸缩规则最多可以添加20个。
当前仅支持根据 YARN 的部分指标配置负载类型的伸缩规则。
如果集群的 YARN 服务处于停止状态或服务异常,则负载指标类型的规则将失效。
弹性伸缩规则是属于集群的,如果想让符合条件的节点组能够弹性伸缩,则需要开启对应节点组的弹性伸缩功能,详见开启弹性伸缩
当规则触发后,关联了该规则的所有节点组会按照关联规则时预置的策略自动进行扩容或缩容。如果不设置规则,或设置规则后未关联节点组,则不会触发弹性伸缩功能。
伸缩动作是分节点组(同规格的节点配置)进行的,不同节点组之间互不影响。
在弹性伸缩规则栏,伸缩规则tab页签(默认展示),单击右侧添加伸缩规则按钮即可以添加新的伸缩规则。
详细的字段说明参照下表:
规则项 | 示例值 | 描述 |
---|---|---|
规则名称 | test-policy | 伸缩规则的名称,取值:
|
触发条件 | ||
固定时间点 | 2023-02-10 14:54:14 |
|
每日+区间 | 08:00 - 18:00 | 表示在每天的某个时间段内触发 |
每日+等于 | 09:00 | 表示在每天的某个时间点上触发 |
每周 | 周一、周五 | 表示每周的某一天触发,可以多选 |
每月+区间 | 10 - 22日 | 表示每月的某一连续日期触发 |
每月+等于 | 最后一天 | 表示每月的某一天触发,支持选最后一天或第一天 |
数值类型 | Yarn 可用核数: | 某一项指标超过阈值的情况,在某一时间段内发生的次数超过所设定的次数时,则触发。指标的采样间隔为半分钟。 |
负载指标项一览:
条件类型 | 数据源 | 指标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提交任务数 | 个 |
规则名称和触发条件填写完成后,单击确定按钮,完成伸缩规则添加。
伸缩规则添加成功后,您可对添加成功的伸缩规则进行以下管理操作:
编辑与删除规则:
单击操作列中的编辑或删除按钮,可以对伸缩规则进行编辑或删除操作。
注意
编辑规则是实时生效的,会在下一个轮询间隔内体现,并且该规则关联到的节点组都会受影响。
删除规则时,如果该规则已被节点组关联,则会同步解除该关联关系,需谨慎操作。
查询规则:
可以在搜索框里面输入规则名称对伸缩规则进行模糊查询。
在关联节点组列,单击右侧的筛选漏斗按钮,可对规则进行筛选,可以查询到对应节点组所关联的规则。
设置冷却时间:
在伸缩规则 tab 页签中,单击通用设置右侧的编辑图标,可以设置冷却时间,如果不设置,默认为5分钟。
冷却时间的详细说明:
作用范围: 当前集群所有已添加的规则。
作用: 当伸缩规则触发某个节点组(或多个节点组)产生了扩缩容动作,在扩缩容完成后的一段时间内,将会拒绝该节点组由伸缩规则所触发的扩缩容动作,该段时间称之为冷却时间,是为了防止出现在某些情况下节点组快速且频繁的扩缩容,而造成集群的不稳定场景。
注意
该冷却时间只对弹性伸缩规则生效,不对手动行为生效,即在冷却时间内,手动扩缩容功能不受影响。
在可用弹性伸缩节点组栏,单击右侧操作列中关联规则按钮,可以看到当前集群下的所有已添加的规则,若规则较多时,您可以选择“仅查看已绑定的规则”或在右侧的搜索框里输入规则名称来进行快速检索。
说明
若集群下还没有规则,可以单击添加规则按钮,快速链接跳转到添加规则页面,进行添加伸缩规则。详见 6.2.3 添加伸缩规则。
单击列表操作列中的绑定按钮,可以绑定该规则到当前节点组上,绑定时需设置伸缩行为的相关参数,说明如下:
参数 | 说明 |
---|---|
新增实例数 | 按台数增加 |
新增实例百分比 | 根据规则触发时,实例数的百分比来计算新增台数,向上取整,如果当时的实例数为0,则按1处理。 |
减少实例数 | 按台数减少 |
减少实例百分比 | 根据规则触发时,实例数的百分比来计算减少台数,向下取整。 |
绑定规则后,您可以通过单击伸缩行为列中的编辑图标按钮进行伸缩行为的调整。
注意
单次最多可以调整的实例个数不允许超过30。
如果需要查看规则的详细信息,以便对应设置伸缩行为,可以单击规则详情按钮或规则左侧的展开符进行查看。
单击伸缩规则 tab 页签右侧的历史记录,可以查看集群的弹性伸缩记录。
在历史记录中,您可进行以下操作:
可通过勾选已命中触发条件来快速筛选历史记录,默认为已勾选。
可在搜索框里面输入规则名称, 来筛选所关注的规则触发与执行情况,支持模糊查询。
可在时间搜索框里输入起始与终止时间进行查询,系统默认时间范围为距离当前时间近一天。
还可以通过伸缩状态列右侧的筛选漏斗按钮进行筛选记录。具体状态说明如下表:
状态 | 描述 |
---|---|
执行中 | 弹性伸缩活动正在执行。 |
全部成功 | 根据伸缩规则与绑定信息,所有伸缩的节点,均被加入或移出对应的节点组。 |
部分成功 | 只有在扩容时才会发生,因为受 ECS 或云盘库存的影响,只有部分节点执行成功。 |
全部失败 | 根据伸缩规则,没有一个节点被加入或移出集群。 |
拒绝 | 当运行伸缩规则后的实例数大于最大实例数或者小于最小实例数时,或者当运行规则触发时该节点组的上一次伸缩活动还未结束,则会拒绝该规则运行。 |
异常 | 只有在缩容时才会发生,当 ECS、云盘或计费模块等服务异常时,组件已经下线,但节点未能移除,此时,该伸缩组状态会锁定为缩容中,不能进行节点变动的操作,需要您尽快联系我们进行处理,以免受到损失。 |
点击命中触发条件列中的查看按钮,可以结合历史指标值查看负载类规则的触发情况。