当您的业务量需求不断波动时,建议您开启弹性伸缩功能并配置相应的伸缩规则,以便于E-MapReduce(简称EMR)可以按业务量波动增加或减少Task节点。确保作业完成的同时,可以节省成本。本文为您介绍如何在EMR控制台配置弹性伸缩。
前提条件
使用限制
为避免由于ECS库存不足造成的弹性伸缩失败,您最多可以选择10种ECS实例作为备选,并默认按照选择顺序进行扩容,每个节点创建时,会从第一个规格开始尝试购买,直到创建成功。最终购买的实例规格可能随库存变化而不同。
仅部署了YARN服务的集群,支持配置负载伸缩规则。
注意事项
您可以为满足条件的节点组添加弹性伸缩规则,当规则触发后,节点组会按照规则预置的策略自动进行节点组的扩容或缩容。如果不设置规则,则不会触发弹性伸缩活动。
系统会根据您选择的vCPU和内存规格,自动匹配出满足条件的实例,并显示在备选实例列表中。您需要选中备选的实例,以便集群按照已选的实例规格进行伸缩。
操作步骤
进入弹性伸缩页面。
登录EMR on ECS。
在顶部菜单栏处,根据实际情况选择地域和资源组。
单击目标集群的集群名称。
单击上方的弹性伸缩。
配置伸缩规则。
在弹性伸缩配置页签,单击目标节点组操作列的编辑。
在配置弹性伸缩面板,配置相关参数。
当前节点组实例数限制:用于控制组内节点数,避免弹性伸缩自动运行时导致节点组内节点数过多或过少。
最大实例数:用于控制当前节点组的节点数量上限,当到达上限时,不再扩容。
最小实例数:用于控制当前节点组的节点数量下限,当到达下限时,不再缩容。
如果需要更改该配置,请单击修改限制。
触发规则:展示和配置当前节点组的伸缩规则。
您可以选择触发方式和规则。
规定时间伸缩
如果集群计算量在一定的周期内存在明显的波峰和波谷,则您可以设置在每天、每周或每月的固定时间段扩展一定量的Task节点来补充计算能力,这样在保证作业完成的同时,也可以节省成本。伸缩规则分为扩容规则和缩容规则,本示例以扩容规则为例介绍。
参数
描述
扩容类型
按时间扩容。
规则名称
在同一个集群中,伸缩规则名称(包括扩容规则和缩容规则)不允许重复。
执行频率
重复执行:您可以选择每天、每周或每月的某一特定时间点执行一次弹性伸缩动作。
只执行一次:集群在指定的时间点执行一次弹性伸缩动作。
执行时间
选择规则执行的时间。
规则有效期
设置规则生效的截止时间,超出后则不会触发伸缩活动。
重试过期时间
弹性伸缩在到达指定时间时可能由于各种原因不能执行,通过设置重试过期时间,系统会在该时间范围内每隔30秒尝试执行一次,直到在满足条件时执行伸缩。设置范围为0~3600秒。
例如,在指定时间段需要进行弹性伸缩动作A,如果有其他弹性伸缩动作B正在执行或正处在冷却期,则动作A无法执行。在您设置的重试过期时间内,每隔30秒会重试一次,尝试执行A,一旦条件满足,集群会立刻执行弹性伸缩。
单次扩容数
时间规则被触发时,节点组每次触发伸缩活动增加的节点数量。
规定负载伸缩
说明仅当创建的集群部署了YARN服务后,才支持该功能。
如果您无法准确的预估大数据计算的波峰和波谷,则可以使用按负载伸缩配置的策略。伸缩规则分为扩容规则和缩容规则,本示例以扩容规则为例介绍。
参数
描述
扩容类型
按负载扩容。
规则名称
在同一个集群中,伸缩规则名称(包括扩容规则和缩容规则)不允许重复。
负载指标触发条件
按负载伸缩规则进入触发状态时需满足的条件。您需要选择一个或多个系统定义的负载指标,选择多个系统定义的负载指标时,单击添加指标继续选择即可。该部分参数包含以下内容:
负载指标:系统支持的负载指标名称。E-MapReduce弹性伸缩指标与YARN负载指标的对应关系,请参见E-MapReduce弹性伸缩指标与YARN所属服务的对应关系。
说明集群类型不同,系统支持的负载指标也不同,具体请您以控制台实际页面显示为准。
统计办法:即判定负载指标值超出阈值范围的规则。选定的负载指标在一个统计周期内,按照选定的聚合维度(平均值、最大值和最小值),达到阈值为一次触发。
多指标关系
支持当所有指标都符合条件时触发和任意一个指标符合条件时触发两种报警规则的选择方式。
统计周期
弹性伸缩会根据统计周期收集、汇总和比较数据,粒度越小,越易触发规则,请根据业务需要选择合理的统计周期。
重复几次后扩容
根据统计办法,负载指标值超出阈值后,弹性伸缩会记录次数,满足重复次数后才会触发相应的伸缩规则。
单次扩容数
负载规则被触发时,节点组每次触发伸缩活动增加的节点数量。
冷却时间
每次弹性伸缩动作开始,到可以再次进行弹性伸缩的时间间隔。在冷却时间内,即使满足弹性伸缩条件也不会发生弹性伸缩动作。即忽略本次在冷却时间内触发的弹性伸缩动作,直到下一次满足伸缩条件且不在冷却时间内再执行。
当节点组完成伸缩活动并达到预期状态时,冷却时间可使后续触发伸缩活动的负载指标处于稳定状态。
生效时间约束
可选参数,用于控制按负载伸缩规则的生效时间范围。默认为全天24小时,设置后仅在设置的时间范围内触发伸缩活动。
配置完后,单击保存并应用。
当条件满足时会触发节点组的弹性伸缩活动。
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及之后版本支持该指标。 |