You need to enable JavaScript to run this app.
文档中心
E-MapReduce

E-MapReduce

复制全文
下载 pdf
资源变配与节点管理
弹性伸缩
复制全文
下载 pdf
弹性伸缩

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

背景信息

应用场景

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

  • 业务计算负载曲线有明显的波峰波谷情况。
  • 你对业务非常熟悉,可以规划固定时间段内集群的计算能力,使之满足业务需求的同时,还可以节省成本。
  • 为确保重要作业按时完成,需要在某一时间段内按照某些负载指标扩充节点。

说明

弹性伸缩是否成功,与资源库存、集群运行状态等因素有关。

概念释义

  • 弹性伸缩:
    弹性伸缩(Auto Scaling),是根据您的业务需求和策略,自动调整集群计算资源的管理服务。
  • 采样间隔
    负载指标值的采集,一般是通过指标监控服务(比如 prometheus)在集群端进行固定频率的采样与收集,我们把相邻两次采样之间的间隔时间段叫做采样间隔,该值固定为30秒。
  • 轮询间隔
    管控端对各集群采集到的指标值进行简单轮询,相邻两次轮询之间的间隔时间叫做轮询间隔,该值固定为5分钟。根据上面的采样间隔值很容易算出,一个轮询查询到的某一负载指标的值共有10条。

核心能力

核心能力

说明

支持多种伸缩场景

  • 弹性扩展,根据您自己的业务需求自动调整其弹性计算资源,在满足业务需求高峰增长时无缝地增加 ECS实例。
  • 弹性收缩,根据您自己的业务需求自动调整其弹性计算资源,在业务需求下降时自动减少 ECS 实例以节约成本。

支持多种伸缩规则

  • 定时伸缩规则,配置定时任务,一次性在固定时间增加或减少 ECS 实例,适合于突发性的且业务需求比较明确的场景。
  • 周期伸缩规则,配置周期性任务,定时地增加或减少 ECS 实例,适合于比较稳定的业务预期。
  • 负载规则,基于 YARN 指标(如运行任务数、可用内存等),自动增加或减少 ECS 实例。适合 EMR 高阶用户,可以充分利用计算资源,减低成本。
  • 复合伸缩规则,时间区间与负载规则相与使用,在重复时间周期内根据YARN指标自动增加或减少 ECS 实例,适合于业务预期比较明确的高阶用户,即可以充分利用计算资源,又最大程度上满足业务需求。

伸缩规则

规则类型

适用场景

核心配置参数

约束校项

定时规则

在可预见的、一次性的业务高峰前快速扩充资源。

  • 触发条件:一个未来的固定时间点(时间精度可选年/月/日/时/分,秒为默认值0)。
  • 示例:固定时间点 = 2026-02-27 21:12

Image

  • 不可与其他条件相与。
  • 固定时间点必须大于当前时间+5分钟之后的时间(缺省值为当前时间+5分钟)。

周期规则

应对具有明显规律性潮汐特征的业务。

  • 重复周期:天。
  • 触发条件:一天内的某一个具体时间(时/分,秒为默认值0)。
  • 示例:每日 = 03:04。

Image

  • 不可与其他条件相与。
  • 不可与同类条件(按天周期)相或。
  • 重复周期:周。
  • 触发条件:周一至周日的某一天或者几天(周几)的一个具体时间(时/分,秒为默认值0)。
  • 示例:每周的周二、周四 = 03:04

Image

  • 不可与其他条件相与。
  • 不可与同类条件(按天周期)相或。
  • 重复周期:月。
  • 触发条件:每月的某一天或者几天的一个具体时间(精度可到时/分,秒为默认值0)。
  • 示例:每月的1日、15日 的 03:04。
    Image
  • 不可与其他条件相与。
  • “每月最后一天”根据月份天数自动匹配。
  • 若所选日期当月不存在(如2月30日),自动调整为当月最后一天。

负载规则

在特定时间段内,结合负载情况进行精细化管理。例如,仅在工作日的白天业务高峰时段,才启用基于 YARN 负载的动态伸缩。

  • YARN 指标:选择一个或多个 YARN 指标作为触发器,如 AppsPending(排队任务数)、AvailableMemoryPrecentage(可用内存百分比)等。
  • 支持按 YARN 队列维度的资源指标自动触发弹性伸缩,默认为root,可支持root下队列,如root.default、root.production。
    Image
  • 指标条件:当指标 > 、>= 、= 、<= 、<某个阈值
  • 频率:在过去的统计周期内发生次数大于X次。统计周期:XX 分钟/小时。
  • 触发条件:YARN指标满足指标条件的达到指定频率且不在冷却期内。
  • 示例:30分钟内Yarn可用核数大于50core次数大于5次,每次规则生效后冷却30分钟。
  • 必须与时间区间规则相与。
  • 当 YARN 服务异常或停止时,所有基于 YARN 指标的负载规则将自动失效。
  • 频率的统计周期大于5分钟小于1小时。
  • 添加一条负载伸缩规则,默认添加一条时间区间伸缩规则。缺省值:每日&区间。

时间区间

  • 重复周期:每日。
  • 时间段:一天内的某一个区间(时/分,秒为默认值0)。
  • 示例:每日的 03:00-5:00。

Image

  • 必须与负载规则相与。
  • 时间区间大于5分钟。
  • 时间区间必须大于负载统计周期。
  • 重复周期:每周。
  • 时间段:周一至周日的某一天或者几天(周几)的某一个区间(时/分,秒为默认值0)。
  • 示例:每周的周二、周四的 03:00-5:00。

Image

  • 重复周期:每月。
  • 时间段:每月的某一天或者几天的的某一个区间(时/分,秒为默认值0)。
  • 示例:每月的1日、15日的 03:00-5:00。

Image

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

    集群类型

    版本要求

    Hadoop

    = EMR-2.0.1

    Starrocks

    = EMR-3.5

  • 集群实例设置中,需先添加 Task 实例。详见创建集群。

    说明

    • 创建集群时,在集群实例设置中需先添加 Task 节点实例的创建,详见创建集群。
    • 若已有集群没有创建按量付费的 Task 节点组,您可通过节点管理 > 新增节点组后,再操作弹性伸缩。详见节点组管理。
    • 还可以在进入到弹性伸缩页签后,单击页面中间的添加节点组,进行 Task 节点伸缩组的添加。

开启弹性伸缩
  1. 登录 EMR 控制台。
  2. 从左侧导航栏中,进入 资源管理 > on ECS > 集群名称详情 > 弹性伸缩页签。
  3. 若集群有满足条件的 Task 节点组时,在可用弹性伸缩节点组栏,可以看到该集群所有可用的弹性伸缩节点组列表。您可执行以下操作:
    • 在最右侧操作列中,单击开启或关闭按钮,控制节点组弹性伸缩功能的状态。
    • 在弹性伸缩范围列中,显示节点组实例数的限制范围,单击编辑按钮,设置弹性伸缩的最大与最小实例数范围。最小与最大实例数的设置只对弹性伸缩生效,对于手动扩容或缩容不具有约束作用。其作用为:
      • 最大实例数设置的作用:扩容规则生效时,如果扩容后的实例数量超过上限,则该次扩容动作将被拒绝执行,以保证伸缩组内的实例数量不超过最大实例数上限
      • 最小实例数设置的作用:缩容规则生效时,如果缩容后的实例数量低于下限,则该次缩容动作将被拒绝执行,以保证伸缩组内的实例数量不低于最小实例数下限。

      说明

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

添加弹性伸缩规则

使用限制

  1. 每个集群的伸缩规则最多可以添加20个。
  2. 当前仅支持根据 YARN 的部分指标配置负载类型的伸缩规则。
  3. 如果集群的 YARN 服务处于停止状态或服务异常,则负载指标类型的规则将失效。

注意事项

  1. 弹性伸缩规则是属于集群的,如果想让符合条件的节点组能够弹性伸缩,则需要开启对应节点组的弹性伸缩功能,详见开启弹性伸缩。
  2. 当规则触发后,关联了该规则的所有节点组会按照关联规则时预置的策略自动进行扩容或缩容。如果不设置规则,或设置规则后未关联节点组,则不会触发弹性伸缩功能。
  3. 伸缩动作是分节点组(同规格的节点配置)进行的,不同节点组之间互不影响。

添加伸缩规则

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

配置规则名称

规则项

描述

示例值

规则名称

伸缩规则的名称,取值:

  • 只能以中文、字母开头。
  • 只能包含中文、字母、数字、下划线和中划线。
  • 长度限制为 1~128 个字符。
  • 暂不支持特殊字符。

test-policy

配置触发条件

规则项

描述

示例值

固定时间点

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

2023-02-10 14:54:14

每日+区间

表示在每天的某个时间段内触发

08:00 - 18:00

每日+等于

表示在每天的某个时间点上触发

09:00

每周

表示每周的某一天触发,可以多选

周一、周五

每月+区间

表示每月的某一连续日期触发

10 - 22日

每月+等于

表示每月的某一天触发,支持选最后一天或第一天

最后一天

数值类型

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

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

配置重试时间

规则项

描述

示例值

重试时间

重试时间仅适用于基于时间触发的伸缩规则。当规则到达指定触发时间但因冷却中、其他扩缩容进行中、库存不足等原因无法立即执行时,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提交任务数

个

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

管理伸缩规则

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

编辑与删除规则

单击操作列中的编辑或删除按钮,可以对伸缩规则进行编辑或删除操作。
Image
若规则已经绑定节点组且节点组开启弹性伸缩,则该规则处于生效中状态,生效中的规则不支持编辑、删除,对应按钮将置灰显示,鼠标悬浮到编辑或删除按钮时,将提示不可操作原因。
Image

注意

  • 编辑规则是实时生效的,会在下一个轮询间隔内体现,并且该规则关联到的节点组都会受影响。
  • 删除规则时,如果该规则已被节点组关联,则会同步解除该关联关系,需谨慎操作。
  • 规则已经绑定节点组且节点组开启弹性伸缩,则该规则处于生效状态,生效状态的规则不允许编辑或者删除。

查询规则

  • 可以在搜索框里面输入规则名称对伸缩规则进行模糊查询。
  • 在关联节点组列,单击右侧的筛选漏斗按钮,可对规则进行筛选,可以查询到对应节点组所关联的规则。

设置冷却时间

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

  • 作用范围: 当前集群所有已添加的规则。
  • 设置范围:1-180分钟。
  • 缺省值:5分钟。
  • 操作步骤:在伸缩规则 tab 页签中,单击通用设置右侧的编辑图标,可以设置冷却时间。

    注意

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

关联伸缩规则

开启关联弹性伸缩规则

在可用弹性伸缩节点组栏,单击右侧操作列中关联规则左侧按钮,为节点组开启关联弹性伸缩规则。
Image

绑定伸缩规则

单击关联规则页面操作列中的绑定按钮,可以绑定该规则到当前节点组上。
Image
绑定时需绑定时需要配置以下内容:

  • 伸缩行为

    参数

    说明

    新增实例数

    按台数增加

    新增实例百分比

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

    减少实例数

    按台数减少

    减少实例百分比

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

  • 自动添加资源池标签

    状态

    说明

    前提条件

    开启

    开启自动添加资源池标签后,可选择目标资源池标签,系统将自动为弹性扩容的节点关联该资源池。
    Image

    开启资源池管理,详见YARN 资源池管理

    关闭

    弹性扩容节点不会关联资源池标签。

    不涉及

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

注意

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

查看关联规则

单击关联规则按钮,可进入关联规则页面,可以看到当前集群下的所有已添加的规则。
Image
关联规则页面中,可以看到当前集群下的所有已添加的规则。
若规则较多时,您可以勾选“仅查看已绑定的规则”或在右侧的搜索框里输入规则名称来进行快速检索。

说明

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

查看伸缩记录

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

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

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

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

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

    状态

    描述

    执行中

    弹性伸缩活动正在执行。

    全部成功

    根据伸缩规则与绑定信息,所有伸缩的节点,均被加入或移出对应的节点组。

    部分成功

    只有在扩容时才会发生,因为受 ECS 或云盘库存的影响,只有部分节点执行成功。

    全部失败

    根据伸缩规则,没有一个节点被加入或移出集群。

    拒绝

    当运行伸缩规则后的实例数大于最大实例数或者小于最小实例数时,或者当运行规则触发时该节点组的上一次伸缩活动还未结束,则会拒绝该规则运行。

    异常

    只有在缩容时才会发生,当 ECS、云盘或计费模块等服务异常时,组件已经下线,但节点未能移除,此时,该伸缩组状态会锁定为缩容中,不能进行节点变动的操作,需要您尽快联系我们进行处理,以免受到损失。

  5. 点击命中触发条件列中的查看按钮,可以结合历史指标值查看负载类规则的触发情况。

最近更新时间:2026.05.14 19:47:21
这个页面对您有帮助吗?
有用
有用
无用
无用