当您的业务量需求不断波动时,建议您开启弹性伸缩功能并配置相应的伸缩规则,以便于E-MapReduce(简称EMR)可以按业务量波动增加或减少Task节点。确保作业完成的同时,可以节省成本。本文为您介绍如何在EMR控制台配置弹性伸缩。
前提条件
使用限制
为避免由于ECS库存不足造成的弹性伸缩失败,您最多可以选择10种ECS实例作为备选,并默认按照选择顺序进行扩容,每个节点创建时,会从第一个规格开始尝试购买,直到创建成功。最终购买的实例规格可能随库存变化而不同。
仅部署了YARN服务的集群,支持配置负载伸缩规则。
注意事项
您可以为满足条件的节点组添加弹性伸缩规则,当规则触发后,节点组会按照规则预置的策略自动进行节点组的扩容或缩容。如果不设置规则,则不会触发弹性伸缩活动。
弹性伸缩配置可以指定伸缩的节点的硬件规格。您可以在弹性伸缩功能未开启的情况下配置具体实例规格。如果特殊情况确实需要修改,可以关闭弹性伸缩功能后,再次开启。
当前托管弹性伸缩规则为白名单开放,若需体验请提交工单开通。开启白名单功能后,弹性伸缩规则支持自定义弹性伸缩规则、托管弹性伸缩规则和不使用弹性伸缩规则(默认)三种配置选项,您可以从中选择一种。
当您切换弹性伸缩模式时,原有弹性伸缩规则将会失效,请谨慎操作。
添加自定义弹性伸缩规则
进入弹性伸缩页面。
登录EMR on ECS。
在顶部菜单栏处,根据实际情况选择地域和资源组。
单击目标集群的集群名称。
单击上方的弹性伸缩。
在弹性伸缩配置页签的配置弹性伸缩规则区域,单击自定义弹性伸缩规则。
说明如果您未启用白名单,则直接在弹性伸缩配置页签配置弹性伸缩规则区域,单击目标节点组操作列的编辑,以配置弹性伸缩规则。
配置伸缩规则。
在弹出的对话框中,单击重新配置,配置相关参数。
在自定义弹性伸缩规则区域,单击目标节点组操作列的编辑。
在配置弹性伸缩面板,配置相关参数,单击确定。
当前节点组实例数限制:用于控制组内节点数,避免弹性伸缩自动运行时导致节点组内节点数过多或过少。如果需要更改该配置,请单击修改限制。
最大实例数:用于控制当前节点组的节点数量上限,当到达上限时,不再扩容。
最小实例数:用于控制当前节点组的节点数量下限,当到达下限时,不再缩容。
触发规则:展示和配置当前节点组的伸缩规则。
规定时间伸缩
如果集群计算量在一定的周期内存在明显的波峰和波谷,则您可以设置在每天、每周或每月的固定时间段扩展一定量的Task节点来补充计算能力,这样在保证作业完成的同时,也可以节省成本。伸缩规则分为扩容规则和缩容规则,本示例以扩容规则为例介绍。
参数
描述
扩容类型
按时间扩容。
规则名称
在同一个集群中,伸缩规则名称(包括扩容规则和缩容规则)不允许重复。
执行频率
重复执行:您可以选择每天、每周或每月的某一特定时间点执行一次弹性伸缩动作。
只执行一次:集群在指定的时间点执行一次弹性伸缩动作。
执行时间
选择规则执行的时间。
规则有效期
设置规则生效的截止时间,超出后则不会触发伸缩活动。
重试过期时间
弹性伸缩在到达指定时间时可能由于各种原因不能执行,通过设置重试过期时间,系统会在该时间范围内每隔30秒尝试执行一次,直到满足条件时执行伸缩。设置范围为0~3600秒。
例如,在指定时间段需要进行弹性伸缩动作A,如果有其他弹性伸缩动作B正在执行或正处在冷却期,则动作A无法执行。在您设置的重试过期时间内,每隔30秒会重试一次,尝试执行A,一旦条件满足,集群会立刻执行弹性伸缩。
单次扩容数
时间规则被触发时,节点组每次触发伸缩活动增加的节点数量。
尽力交付
开启尽力交付功能后,如果遇到ECS资源库存不足或ECS部署失败异常等情况,系统会竭尽全力交付所有成功创建的节点到集群中,以维持整体业务的顺畅运行。
规定负载伸缩
说明仅当创建的集群部署了YARN服务后,才支持该功能。
如果您无法准确的预估大数据计算的波峰和波谷,则可以使用按负载伸缩配置的策略。伸缩规则分为扩容规则和缩容规则,本示例以扩容规则为例介绍。
参数
描述
扩容类型
按负载扩容。
规则名称
在同一个集群中,伸缩规则名称(包括扩容规则和缩容规则)不允许重复。
负载指标触发条件
按负载伸缩规则进入触发状态时需满足的条件。您需要选择一个或多个系统定义的负载指标,选择多个系统定义的负载指标时,单击添加指标继续选择即可。该部分参数包含以下内容:
负载指标:系统支持的负载指标名称。E-MapReduce弹性伸缩指标与YARN负载指标的对应关系,请参见E-MapReduce弹性伸缩指标与YARN所属服务的对应关系。
说明集群类型不同,系统支持的负载指标也不同,具体请您以控制台实际页面显示为准。
统计办法:即判定负载指标值超出阈值范围的规则。选定的负载指标在一个统计周期内,按照选定的聚合维度(平均值、最大值和最小值),达到阈值为一次触发。
多指标关系
支持当所有指标都符合条件时触发和任意一个指标符合条件时触发两种报警规则的选择方式。
统计周期
弹性伸缩会根据统计周期收集、汇总和比较数据,粒度越小,越易触发规则,请根据业务需要选择合理的统计周期。
重复几次后扩容
根据统计办法,负载指标值超出阈值后,弹性伸缩会记录次数,满足重复次数后才会触发相应的伸缩规则。
单次扩容数
负载规则被触发时,节点组每次触发伸缩活动增加的节点数量。
尽力交付
开启尽力交付功能后,如果遇到ECS资源库存不足或ECS部署失败异常等情况,系统会竭尽全力交付所有成功创建的节点到集群中,以维持整体业务的顺畅运行。
冷却时间
每次弹性伸缩动作开始,到可以再次进行弹性伸缩的时间间隔。在冷却时间内,即使满足弹性伸缩条件也不会发生弹性伸缩动作。即忽略本次在冷却时间内触发的弹性伸缩动作,直到下一次满足伸缩条件且不在冷却时间内再执行。
当节点组完成伸缩活动并达到预期状态时,冷却时间可使后续触发伸缩活动的负载指标处于稳定状态。
生效时间约束
可选参数,用于控制按负载伸缩规则的生效时间范围。默认为全天24小时,设置后仅在设置的时间范围内触发伸缩活动。
配置完后,单击保存并应用。
当条件满足时会触发节点组的弹性伸缩活动。
添加托管弹性伸缩规则
托管弹性伸缩功能开启后,系统将持续监控集群YARN的负载,并计算过去10分钟内的负载峰值变化情况,以便自动调整Task节点的数量。
当前托管弹性伸缩规则为白名单开放,若需体验请提交工单开通。
若集群中存在Trino、Presto、StarRocks、Impala或Clickhouse服务,则托管的弹性伸缩效果将无法得到保障。
进入弹性伸缩页面。
登录EMR on ECS。
在顶部菜单栏处,根据实际情况选择地域和资源组。
单击目标集群的集群名称。
单击上方的弹性伸缩。
在弹性伸缩配置页签的配置弹性伸缩规则区域,单击托管弹性伸缩规则。
配置伸缩规则。
在弹出的对话框中,单击重新配置,配置相关参数。
最小Task节点数:托管缩容策略触发时,集群最少保留弹性伸缩的Task节点数。
最大Task节点数:托管扩容策略触发时,集群最多保留弹性伸缩的Task节点数。
最大按量Task节点数:扩容触发后最大扩容的按量计费节点数量,用于设置按量计费节点和竞价实例的占比,默认为最大Task节点数。
说明如果集群中存在抢占式实例的Task节点组,则最大按量Task节点数可以小于最大Task节点数。例如,当最小Task节点数设为0,最大Task节点数设为20,而最大按量Task节点数设为15时,在扩容过程中,系统会首先尝试增加15个按量计费的节点,之后如果有进一步的需求,则使用抢占式实例来补充剩余所需的节点数量。
配置完后,单击保存并应用。
E-MapReduce弹性伸缩指标与YARN所属服务的对应关系
E-MapReduce弹性伸缩指标 | 所属服务 | 说明 |
yarn_resourcemanager_queue_AvailableVCores | YARN | root队列可供分配的虚拟核数。 |
yarn_resourcemanager_queue_PendingVCores | YARN | root队列待分配的虚拟核数。 |
yarn_resourcemanager_queue_AllocatedVCores | YARN | root队列已分配的虚拟核数。 |
yarn_resourcemanager_queue_ReservedVCores | YARN | root队列预留的虚拟核数。 |
yarn_resourcemanager_queue_AvailableMB | YARN | root队列可供分配的内存量。 |
yarn_resourcemanager_queue_PendingMB | YARN | root队列待分配的内存量。 |
yarn_resourcemanager_queue_AllocatedMB | YARN | root队列已分配的内存量。 |
yarn_resourcemanager_queue_ReservedMB | YARN | root队列预留的内存量。 |
yarn_resourcemanager_queue_AppsRunning | YARN | root队列运行中的任务数。 |
yarn_resourcemanager_queue_AppsPending | YARN | root队列挂起的任务数。 |
yarn_resourcemanager_queue_AppsKilled | YARN | root队列终止的任务数。 |
yarn_resourcemanager_queue_AppsFailed | YARN | root队列失败的任务数。 |
yarn_resourcemanager_queue_AppsCompleted | YARN | root队列完成的任务数。 |
yarn_resourcemanager_queue_AppsSubmitted | YARN | root队列提交的任务数。 |
yarn_resourcemanager_queue_AllocatedContainers | YARN | root队列已分配的容器数。 |
yarn_resourcemanager_queue_PendingContainers | YARN | root队列待分配的容器数。 |
yarn_resourcemanager_queue_ReservedContainers | YARN | root队列预留的容器数。 |
yarn_resourcemanager_queue_AvailableMBPercentage | YARN | root队列可用内存资源所占百分比。 说明 EMR-3.43及之后版本、EMR-5.9及之后版本支持该指标。 |
yarn_resourcemanager_queue_PendingContainersRatio | YARN | root队列待分配的容器数与已分配的容器数的比率。 说明 EMR-3.43及之后版本、EMR-5.9及之后版本支持该指标。 |
yarn_resourcemanager_queue_AvailableVCoresPercentage | YARN | root队列可用CPU核数资源所占百分比。 说明 EMR-3.43及之后版本、EMR-5.9及之后版本支持该指标。 |
yarn_cluster_numContainersByPartition | YARN | 指定分区的容器数量,参数partition_name为分区名称。 说明 EMR-3.44及之后版本、EMR-5.10及之后版本支持该指标。 |
yarn_cluster_usedMemoryMBByPartition | YARN | 指定分区的内存使用量,参数partition_name为分区名称,空字符串为默认分区。 说明 EMR-3.44及之后版本、EMR-5.10及之后版本支持该指标。 |
yarn_cluster_availMemoryMBByPartition | YARN | 指定分区的内存可用量,参数partition_name为分区名称,空字符串为默认分区。 说明 EMR-3.44及之后版本、EMR-5.10及之后版本支持该指标。 |
yarn_cluster_usedVirtualCoresByPartition | YARN | 指定分区的CPU核数使用量,参数partition_name为分区名称,空字符串为默认分区。 说明 EMR-3.44及之后版本、EMR-5.10及之后版本支持该指标。 |
yarn_cluster_availableVirtualCoresByPartition | YARN | 指定分区的CPU核数可用量,参数partition_name为分区名称,空字符串为默认分区。 说明 EMR-3.44及之后版本、EMR-5.10及之后版本支持该指标。 |