Amazon EMR 集群的可用区灵活性 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon EMR 集群的可用区灵活性

每个 Amazon Web Services 区域 都有多个相互隔离的位置,称为可用区。当您启动实例时,可以选择指定您所用 Amazon Web Services 区域 中的可用区(AZ)。可用区灵活性是指多个中的实例分配 AZs。如果一个实例发生故障,您可以设计您的应用程序,使另一个可用区中的实例可以处理请求。有关可用区的更多信息,请参阅 Amazon EC2 用户指南中的区域和区域文档。

实例灵活性是指使用多种实例类型来满足容量要求。使用实例表现灵活性时,可以跨实例大小、系列和代系使用总容量。与使用单一实例类型的集群相比,更大的灵活性有助于提高查找和分配所需计算容量的能力。

与具有单一实例类型或可用区的集群相比,实例和可用区灵活性能够减少容量不足错误(ICE)和竞价型中断。在了解初始实例系列和大小后,请使用此处介绍的最佳实践来确定需要实现多样化的实例。这种方法可实现最低的性能和成本差异,同时最大限度提高 Amazon EC2 容量池的可用性。

灵活选择可用区

建议配置所有可用区以在虚拟私有云(VPC)中使用,并为 EMR 集群选择这些可用区。集群必须仅存在于一个可用区中,但通过 Amazon EMR 实例集,您可以为不同的可用区选择多个子网。当 Amazon EMR 启动集群时,它会在这些子网中查找您指定的实例和购买选项。当您为多个子网配置 EMR 集群时,与单个子网中的集群相比,您的集群可以访问更充足的 Amazon EC2 容量池。

如果您必须优先考虑一定数量的可用区,以便在 EMR 集群的虚拟私有云(VPC)中使用,则可以利用 Amazon 的 Spot 放置分数功能。 EC2使用竞价型放置评分,您可以指定竞价型实例的计算要求,然后按照 1 到 10 的等级 EC2 返回得分排名前十的 Amazon Web Services 区域 或可用区。分数为 10 表示您的竞价型请求成功的可能性很大;分数为 1 表示您的竞价型请求不太可能成功。有关如何使用竞价放置分数的更多信息,请参阅《Amazon EC2 用户指南》中的竞价放置分数

灵活选择实例类型

实例灵活性是指使用多种实例类型来满足容量要求。实例灵活性有利于 Amazon EC2 Spot 和按需型实例的使用。借助竞价型实例,实例灵活性允许 Amazon 使用实时容量数据从更充足的容量池 EC2 启动实例。此外,实例灵活性还可以预测哪些实例的可用性最高,从而减少中断并降低工作负载的整体成本。借助按需型实例,当在更多的实例池中配置总容量时,实例灵活性可减少容量不足错误(ICE)。

对于 Instance Group 集群,最多可指定 50 个EC2 实例类型。对于具有分配策略的 Instance Fleets( EC2 实例集),每个主节点组、核心节点组和任务节点组最多可指定 30 个实例类型。实例范围越大,实例灵活性的优势就越多。

表现实例灵活性

请考虑以下最佳实践来表现应用程序的实例灵活性。

确定实例系列和大小

Amazon EMR 支持针对不同用例的多个实例类型。Amazon EMR 支持的实例类型 文档中列出了这些实例类型。每个实例类型都属于一个实例系列,该系列描述了该类型针对哪些应用程序进行了优化。

对于新的工作负载,应该使用通用系列中的实例类型进行基准测试,例如 m5c5。然后,从 Ganglia 和 Amazon CloudWatch 监控操作系统和 YARN 指标,以确定负载达到峰值时的系统瓶颈。瓶颈包括 CPU、内存、存储和 I/O 操作。确定瓶颈后,为实例类型选择计算优化、内存优化、存储优化或其他合适的实例系列。有关更多详细信息,请参阅 Amazon EMR 最佳实践指南中的 Amazon EMR 最佳实践指南中的确定适用于 Spark 工作负载的基础设施页面。 GitHub

接下来,确定应用程序需要的最小 YARN 容器或 Spark 执行程序。这是适合容器的最小实例大小,也是集群的最小实例大小。使用此指标来确定可进一步实现多元化的实例。实例越小,实例灵活性就越高。

为了获得最大的实例灵活性,您应该利用尽可能多的实例。建议使用硬件规格相似的实例实现多元化。这可以最大限度地访问 EC2 容量池,同时将成本和性能差异降至最低。实现不同大小实例的多元化。为此,首先要确定 Amazon Graviton 和上一代实例的优先级。一般来说,对于每种工作负载,应在至少 15 种实例类型之间进行灵活选择。建议从通用型实例、计算优化型实例或内存优化型实例开始。这些实例类型的灵活性最大。

包含其他实例

包含其他实例类型,以便最大限度地实现多元化。首先确定实例大小、Graviton 和代系灵活性的优先级。这将允许访问其他具有类似成本和性能配置的 EC2 容量池。如果由于 ICE 或竞价型实例中断而需要提高灵活性,请考虑变体和系列灵活性。每种方法都需要根据您的使用案例和要求进行权衡。

  • 大小灵活性:首先,使用同系列不同大小的实例实现多元化。尽管同系列的实例成本和性能相同,但可以在每台主机上启动不同数量的容器。例如,如果所需的最小执行程序大小为 2vCPU 和 8Gb 内存,则最小实例大小为 m5.xlarge。为实现大小灵活性,请将 m5.xlargem5.2xlargem5.4xlargem5.8xlargem5.12xlargem5.16xlargem5.24xlarge 包含在内。

  • Graviton 灵活性:除大小外,您还可以通过 Graviton 实例实现多元化。Graviton 实例由 G Amazon raviton2 处理器提供支持,可为 Amazon 中的云工作负载提供最佳性价比。 EC2例如,如果最小实例大小为 m5.xlarge,则可将 m6g.xlargem6g.2xlargem6g.4xlargem6g.8xlargem6g.16xlarge 包含在内,以确保实现 Graviton 的灵活性。

  • 代系灵活性:与 Graviton 和大小灵活性类似,上一代系列中的实例具有相同的硬件规格。因此,成本和性能配置相似,同时增加了可访问的 Amazon EC2 池总量。为确保代系灵活性,请将 m4.xlargem4.2xlargem4.10xlargem4.16xlarge 包含在内。

  • 系列和变体灵活性

    • 容量:为了优化容量,建议在实例系列中灵活使用实例。来自不同实例系列的通用实例的实例池更充足,有助于满足容量要求。但是,实例系列不同,vCPU 与内存比率也有所不同。如果预期的应用程序容器大小适合不同的实例,会导致利用不足。例如,对于 m5.xlarge,可将计算优化型实例(如 c5)或内存优化型实例(如 r5)包含在内,以确保实例系列灵活性。

    • 成本:为了优化成本,我们建议在不同变体之间灵活使用实例。这些实例的内存与 vCPU 比率与初始实例相同。变体灵活性的劣势在于,这些实例的容量池较小,可能导致额外容量受限或竞价型实例中断增加。例如对于 m5.xlarge,可将基于 AMD 的实例 (m5a)、基于 SSD 的实例 (m5d) 或网络优化实例 (m5n) 包含在内,以实现变体灵活性。