在 Amazon EMR 中使用 EMR 托管扩展 - Amazon EMR
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon EMR 中使用 EMR 托管扩展

利用 Amazon EMR 版本 5.30.0 及更高版本(Amazon EMR 6.0.0 除外),您可以启用 EMR 托管扩展以根据工作负载自动增加或减少集群中实例或单元的数量。EMR 会持续评估集群指标,以便做出扩展决策,从而优化集群的成本和速度。此功能适用于由实例组或实例队列组成的集群。

您需要为托管扩展配置以下参数。该限制仅适用于核心节点和任务节点。初始配置后,无法扩展主节点。

  • 最小值MinimumCapacityUnits) – 集群中允许的 EC2 容量的下限。它是通过虚拟中央处理单元 (vCPU) 核心或实例组的实例测量的。它通过实例队列的单位进行度量。

  • 最大值MaximumCapacityUnits) – 集群中允许的 EC2 容量的上限。它是通过虚拟中央处理单元 (vCPU) 核心或实例组的实例测量的。它通过实例队列的单位进行度量。

  • 按需限制MaximumOnDemandCapacityUnits)(可选)– 集群中按需市场类型的 EC2 容量的上限。如果未指定此参数,则其默认值为 MaximumCapacityUnits 值。

    此参数用于在按需实例和 Spot 实例之间拆分容量分配。例如,如果您将最小参数设置为 2 个实例,最大参数设置为 100 个实例,按需限制为 10 个实例,则 EMR 托管扩展将扩展至最多 10 个按需实例,并将剩余容量分配给 Spot 实例。有关更多信息,请参阅节点分配方案

  • 最大核心节点数 MaximumCoreCapacityUnits)(可选)– 集群中核心节点类型允许的 EC2 容量的上限。如果未指定此参数,则其默认值为 MaximumCapacityUnits 值。

    此参数用于在核心节点和任务节点之间拆分容量分配。例如,如果您将最小参数设置为 2 个实例,最大为 100 个实例,最大核心节点数为 17 个实例,则 EMR 托管扩展将扩展到最多 17 个核心节点,并将其余 83 个实例分配给任务节点。有关更多信息,请参阅节点分配方案

有关托管调整参数的更多信息,请参阅 ComputeLimits

注意事项和限制

  • EMR 托管扩展目前在 22 个 AWS 区域可用:美国东部(弗吉尼亚北部和俄亥俄)、美国西部(俄勒冈和加利福尼亚北部)、南美洲(圣保罗)、欧洲(法兰克福、爱尔兰、伦敦、米兰、巴黎和斯德哥尔摩)、加拿大(中部)、亚太地区(香港、孟买、首尔、新加坡、悉尼和东京)、中东(巴林)、非洲(开普敦)、中国(北京)由宁夏、中国(北京)运营。

  • 在未安装 Presto 的 5.30.0 和 5.30.1 集群上执行托管扩展操作可能会导致应用程序故障或导致统一的实例组或实例队列保持 ARRESTED 状态,特别是在执行扩展操作后快速执行缩减操作的情况下。

    作为一种解决方法,选择 Presto 作为要在创建集群时安装的应用程序,即使您的作业不需要 Presto 也是如此。

  • EMR 托管扩展仅适用于 YARN 应用程序,如 Spark、Hadoop、Hive 和 Flink。它目前不支持不基于 YARN 的应用程序,如 Presto。

  • 在为 EMR 托管扩展设置最大核心节点和按需限制时,请考虑实例组和实例队列之间的差异。每个实例组由相同的实例类型和相同的实例购买选项组成:按需或 Spot。对于每个实例队列,您可以指定最多 5 个实例类型,这些类型可预配置为按需实例和 Spot 实例。有关更多信息,请参阅使用实例队列或统一实例组创建集群实例队列选项节点分配方案

  • 在 EMR 5.30.0 及更高版本上,如果您将主安全组上的默认“Allow All”出站规则从 0.0.0.0/ 中删除,则必须至少添加一个规则以允许出站 TCP 连接到端口 (4443) 上的服务访问安全组。同样,您的服务访问安全组应允许端口 9443 上来自主安全组的入站 TCP 流量才能实现托管扩展。请参阅适用于主实例(私有子网)的 Amazon EMR 托管的安全组

  • 您可以使用 AWS CloudFormation 配置 EMR 托管扩展。有关更多信息,请参阅 https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html 中的 AWS::EMR::ClusterAWS CloudFormation 用户指南。