You need to enable JavaScript to run this app.
导航

弹性伸缩

最近更新时间2024.01.18 15:59:43

首次发布时间2022.07.28 17:33:38

1 概述

弹性伸缩(Auto Scaling),是根据您的业务需求和策略,自动调整集群计算资源的管理服务。
当您在使用火山引擎 E-MapReduce(EMR)集群过程中,如果资源经常出现波峰波谷的情况,那么在计算高峰时,自动扩展一部分临时计算能力,帮助您渡过业务计算高峰;渡过业务高峰后再进行自动缩容,便可以降低您的计算资源使用成本。本文为您介绍弹性伸缩的核心能力及功能使用情况。

2 应用场景

在以下场景中,使用 EMR 弹性伸缩功能,可以帮助您节省成本,提高执行效率。

  • 业务计算负载曲线有明显的波峰波谷情况。

  • 你对业务非常熟悉,可以规划固定时间段内集群的计算能力,使之满足业务需求的同时,还可以节省成本。

  • 为确保重要作业按时完成,需要在某一时间段内按照某些负载指标扩充节点。

3 前提条件

  1. 弹性伸缩目前以白名单形式开放,您可通过提工单的方式,咨询 EMR 支持人员进行开通。

  2. 弹性伸缩目前仅支持付费类型为按量付费, 支持集群类型与版本如下:

集群类型版本要求
Hadoop>= EMR-2.0.1
Starrocks>= EMR-3.5
  1. 集群实例设置中,需先添加 Task 实例。

详见创建集群

4 核心能力

核心能力说明

支持多种伸缩场景

  • 弹性扩展,根据您自己的业务需求自动调整其弹性计算资源,在满足业务需求高峰增长时无缝地增加 ECS实例;

  • 弹性收缩,根据您自己的业务需求自动调整其弹性计算资源,在业务需求下降时自动减少 ECS 实例以节约成本。

支持多种伸缩策略

  • 定时伸缩模式,配置定时任务,一次性在固定时间增加或减少 ECS 实例,适合于突发性的且业务需求比较明确的场景;

  • 周期伸缩模式,配置周期性任务,定时地增加或减少 ECS 实例,适合于比较稳定的业务预期;

  • 动态伸缩模式,基于 YARN 指标(如运行任务数、可用内存等),自动增加或减少 ECS 实例。适合 EMR 高阶用户,可以充分利用计算资源,减低成本。

  • 复合伸缩模式,基于 YARN 指标与周期性时间段,自动增加或减少 ECS 实例,适合于业务预期比较明确的高阶用户,即可以充分利用计算资源,又最大程度上满足业务需求。

5 概念释义

  • 采样间隔

    负载指标值的采集,一般是通过指标监控服务(比如 prometheus)在集群端进行固定频率的采样与收集,我们把相邻两次采样之间的间隔时间段叫做采样间隔,该值固定为30秒。

  • 轮询间隔

    管控端对各集群采集到的指标值进行简单轮询,相邻两次轮询之间的间隔时间叫做轮询间隔,该值固定为5分钟。根据上面的采样间隔值很容易算出,一个轮询查询到的某一负载指标的值共有10条。

6 操作步骤

6.1 开启弹性伸缩

  1. 登录 EMR 控制台

  2. 从左侧导航栏中,进入集群列表 > 集群名称详情 > 弹性伸缩页签。

    说明

    • 创建集群时,在集群实例设置中需先添加 Task 节点实例的创建,详见创建集群

    • 若已有集群没有创建按量付费的 Task 节点组,您可通过节点管理 > 新增节点组后,再操作弹性伸缩。详见节点组管理

    • 还可以在进入到弹性伸缩页签后,单击页面中间的添加节点组,进行 Task 节点伸缩组的添加。

  3. 若集群有满足条件的 Task 节点组时,在可用弹性伸缩节点组栏,可以看到该集群所有可用的弹性伸缩节点组列表。您可执行以下操作:

    • 在最右侧操作列中,单击开启关闭按钮,控制节点组弹性伸缩功能的状态。

    • 弹性伸缩范围列中,显示节点组实例数的限制范围,单击编辑按钮,设置弹性伸缩的最大与最小实例数范围。最小与最大实例数的设置只对弹性伸缩生效,对于手动扩容或缩容不具有约束作用。其作用为:

      • 最大实例数设置的作用:扩容规则生效时,如果扩容后的实例数量超过上限,则该次扩容动作将被拒绝执行,以保证伸缩组内的实例数量不超过最大实例数上限

      • 最小实例数设置的作用:缩容规则生效时,如果缩容后的实例数量低于下限,则该次缩容动作将被拒绝执行,以保证伸缩组内的实例数量不低于最小实例数下限。

      说明

      在第一次开启节点组弹性伸缩功能的时候,如果您未设置伸缩范围,则系统会将节点组的伸缩范围设置为默认值,默认最小实例数为0,默认最大实例数为30。

6.2 管理弹性伸缩规则

6.2.1 使用限制

  1. 每个集群的伸缩规则最多可以添加20个。

  2. 当前仅支持根据 YARN 的部分指标配置负载类型的伸缩规则。

  3. 如果集群的 YARN 服务处于停止状态或服务异常,则负载指标类型的规则将失效。

6.2.2 注意事项

  1. 弹性伸缩规则是属于集群的,如果想让符合条件的节点组能够弹性伸缩,则需要开启对应节点组的弹性伸缩功能,详见开启弹性伸缩

  2. 当规则触发后,关联了该规则的所有节点组会按照关联规则时预置的策略自动进行扩容或缩容。如果不设置规则,或设置规则后未关联节点组,则不会触发弹性伸缩功能。

  3. 伸缩动作是分节点组(同规格的节点配置)进行的,不同节点组之间互不影响。

6.2.3 添加伸缩规则

弹性伸缩规则栏,伸缩规则tab页签(默认展示),单击右侧添加伸缩规则按钮即可以添加新的伸缩规则。
详细的字段说明参照下表:

规则项示例值描述

规则名称

test-policy

伸缩规则的名称,取值:

  • 只能以中文、字母开头。

  • 只能包含中文、字母、数字、下划线和中划线。

  • 长度限制为 1~128 个字符。

  • 暂不支持特殊字符。

触发条件

固定时间点

2023-02-10 14:54:14

  • 不能设置早于当前的时间。

  • 设置有固定时间点的子规则(用“或”间隔的)中,不能再添加触发指标来设置其他的子项(用“且”间隔的),如果设置了,除固定时间外的其余子项,系统将忽略。

每日+区间08:00 - 18:00表示在每天的某个时间段内触发
每日+等于09:00表示在每天的某个时间点上触发
每周周一、周五表示每周的某一天触发,可以多选
每月+区间10 - 22日表示每月的某一连续日期触发
每月+等于最后一天表示每月的某一天触发,支持选最后一天或第一天

数值类型

Yarn 可用核数:
小于 30core,在 30 分钟内发生次数大于 10 次

某一项指标超过阈值的情况,在某一时间段内发生的次数超过所设定的次数时,则触发。指标的采样间隔为半分钟。
当前支持的指标见下表:负载指标项一览

负载指标项一览:

条件类型数据源指标code源生指标指标名单位
数值YARNAvailableVCoresavailableVirtualCoresYarn可用核数core
数值YARNAvailableMemoryavailableMBYarn可用内存GB
数值YARNAppsRunningappsRunningYarn运行任务数
数值YARNAppsPendingappsPendingYarn排队任务数
数值YARNMemoryAvailablePrecentageavailableMB/totalMBYarn可用内存比例%
数值YARNVCoresAvailablePrecentageavailableVirtualCores/totalVirtualCoresYarn可用核数比例%

数值

YARN

AppsPendingRatio

appsPending/(appsSubmitted + appsPending + appsRunning)

Yarn排队任务比例

%

数值YARNAppsKilledappsKilledYarn中止任务数
数值YARNAppsFailedappsFailedYarn失败任务数
数值YARNAppsCompletedappsCompletedYarn完成任务数
数值YARNAppsSubmittedappsSubmittedYarn提交任务数

规则名称和触发条件填写完成后,单击确定按钮,完成伸缩规则添加。

6.2.4 管理伸缩规则

伸缩规则添加成功后,您可对添加成功的伸缩规则进行以下管理操作:

  1. 编辑与删除规则:

    单击操作列中的编辑删除按钮,可以对伸缩规则进行编辑或删除操作。

    注意

    • 编辑规则是实时生效的,会在下一个轮询间隔内体现,并且该规则关联到的节点组都会受影响。

    • 删除规则时,如果该规则已被节点组关联,则会同步解除该关联关系,需谨慎操作。

  2. 查询规则:

    • 可以在搜索框里面输入规则名称对伸缩规则进行模糊查询。

    • 关联节点组列,单击右侧的筛选漏斗按钮,可对规则进行筛选,可以查询到对应节点组所关联的规则。

  3. 设置冷却时间:
    伸缩规则 tab 页签中,单击通用设置右侧的编辑图标,可以设置冷却时间,如果不设置,默认为5分钟。
    冷却时间的详细说明:

    • 作用范围: 当前集群所有已添加的规则。

    • 作用: 当伸缩规则触发某个节点组(或多个节点组)产生了扩缩容动作,在扩缩容完成后的一段时间内,将会拒绝该节点组由伸缩规则所触发的扩缩容动作,该段时间称之为冷却时间,是为了防止出现在某些情况下节点组快速且频繁的扩缩容,而造成集群的不稳定场景。

    注意

    该冷却时间只对弹性伸缩规则生效,不对手动行为生效,即在冷却时间内,手动扩缩容功能不受影响。

6.3 关联伸缩规则

可用弹性伸缩节点组栏,单击右侧操作列中关联规则按钮,可以看到当前集群下的所有已添加的规则,若规则较多时,您可以选择“仅查看已绑定的规则”或在右侧的搜索框里输入规则名称来进行快速检索。

说明

若集群下还没有规则,可以单击添加规则按钮,快速链接跳转到添加规则页面,进行添加伸缩规则。详见 6.2.3 添加伸缩规则

  1. 单击列表操作列中的绑定按钮,可以绑定该规则到当前节点组上,绑定时需设置伸缩行为的相关参数,说明如下:

    参数说明
    新增实例数按台数增加

    新增实例百分比

    根据规则触发时,实例数的百分比来计算新增台数,向上取整,如果当时的实例数为0,则按1处理。
    例如:规则触发时的节点数为10,设置增加实例百分比为20%,则将会扩容 2 台。

    减少实例数按台数减少

    减少实例百分比

    根据规则触发时,实例数的百分比来计算减少台数,向下取整。
    例如:规则触发时的节点数为10,设置减少实例百分比为20%,则将会缩容 2 台。

    绑定规则后,您可以通过单击伸缩行为列中的编辑图标按钮进行伸缩行为的调整。

    注意

    单次最多可以调整的实例个数不允许超过30。

  2. 如果需要查看规则的详细信息,以便对应设置伸缩行为,可以单击规则详情按钮或规则左侧的展开符进行查看。

6.4 查看伸缩记录

单击伸缩规则 tab 页签右侧的历史记录,可以查看集群的弹性伸缩记录。
在历史记录中,您可进行以下操作:

  1. 可通过勾选已命中触发条件来快速筛选历史记录,默认为已勾选。

  2. 可在搜索框里面输入规则名称, 来筛选所关注的规则触发与执行情况,支持模糊查询。

  3. 可在时间搜索框里输入起始与终止时间进行查询,系统默认时间范围为距离当前时间近一天。

  4. 还可以通过伸缩状态列右侧的筛选漏斗按钮进行筛选记录。具体状态说明如下表:

    状态描述
    执行中弹性伸缩活动正在执行。
    全部成功根据伸缩规则与绑定信息,所有伸缩的节点,均被加入或移出对应的节点组。
    部分成功只有在扩容时才会发生,因为受 ECS 或云盘库存的影响,只有部分节点执行成功。
    全部失败根据伸缩规则,没有一个节点被加入或移出集群。
    拒绝当运行伸缩规则后的实例数大于最大实例数或者小于最小实例数时,或者当运行规则触发时该节点组的上一次伸缩活动还未结束,则会拒绝该规则运行。
    异常只有在缩容时才会发生,当 ECS、云盘或计费模块等服务异常时,组件已经下线,但节点未能移除,此时,该伸缩组状态会锁定为缩容中,不能进行节点变动的操作,需要您尽快联系我们进行处理,以免受到损失。
  5. 点击命中触发条件列中的查看按钮,可以结合历史指标值查看负载类规则的触发情况。