

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

# 创建具有多个主节点的 Amazon EMR 集群时的注意事项和最佳实践
<a name="emr-plan-ha-considerations"></a>

创建具有多个主节点的 Amazon EMR 集群时，考虑以下各项：

**重要**  
若要启动具有多个主节点的高可用性 EMR 集群，我们强烈建议您使用最新的 Amazon EMR 发行版。这可确保您的高可用性集群的最高级别弹性和稳定性。
+ Amazon EMR 5.36.1、5.36.2、6.8.1、6.9.1、6.10.1、6.11.1、6.12.0 及更高版本支持*实例集*的高可用性。对于*实例组*，Amazon EMR 发行版 5.23.0 及更高版本支持高可用性。要了解更多信息，请参阅[关于 Amazon EMR 发行版](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-release-components.html)。
+ 在高可用性集群上，Amazon EMR 仅支持启动带有按需型实例的主节点。这可确保您的集群的最高可用性。
+ 您仍然可以为主实例集指定多个实例类型，但是高可用性集群的所有主节点都使用相同的实例类型启动，包括替换运行状况不佳的主节点。
+ 要继续运行，具有多个主节点的高可用性集群需要三个主节点中的两个才能正常运行。因此，如果任意两个主节点同时发生故障，EMR 集群也将发生故障。
+ 所有 EMR 集群（包括高可用性集群）都在单个可用区中启动。因此，它们无法容忍可用区故障。在可用区中断的情况下，您将无法访问集群。
+ 如果在实例集内启动集群时使用自定义服务角色或策略，则可以添加 `ec2:DescribeInstanceTypeOfferings` 权限，以便 Amazon EMR 可以筛选出不支持的可用区（AZ）。当 Amazon EMR 筛选出不支持任何主节点实例类型的时，Amazon EMR 会防止集群启动失败，因为主实例类型不受支持。 AZs 有关更多信息，请参阅[不支持的实例类型](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-INSTANCE_TYPE_NOT_SUPPORTED-error.html)。
+ 除了 [具有多个主节点的 Amazon EMR 集群中支持的应用程序](emr-plan-ha-applications.md#emr-plan-ha-applications-list) 中指定的开源应用程序之外，Amazon EMR 不保证其他开源应用程序的高可用性。
+ 在 Amazon EMR 发行版 5.23.0 至 5.36.2 中，实例组集群的三个主节点中只有两个运行 HDFS NameNode。
+ 在 Amazon EMR 6.x 及更高版本中，实例组的三个主节点都在运行 HDFS NameNode。

配置子网的注意事项：
+ 具有多个主节点的 Amazon EMR 集群仅可驻留在一个可用区或子网中。如果在发生失效转移时子网被充分利用或超额订阅，则 Amazon EMR 无法替换发生故障的主节点。为避免出现这种情况，建议您将整个子网专用于 Amazon EMR 集群。此外，请确保子网中有足够的私有 IP 地址。

配置核心节点的注意事项：
+ 为确保核心节点也具有高可用性，我们建议您至少启动四个核心节点。如果您决定启动具有三个或更少核心节点的较小集群，请通过将 `dfs.replication parameter` 设置为至少 `2` 以使 HDFS 具有足够的 DFS 复制。有关更多信息，请参阅 [HDFS 配置](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-hdfs-config.html)。

**警告**  
如果单个节点出现故障，则在少于四个节点的集群上将 `dfs.replication` 设置为 1 可能会导致 HDFS 数据丢失。建议您使用具有至少四个核心节点的集群来处理生产工作负载。
Amazon EMR 不允许集群扩展 `dfs.replication` 下方的核心节点。例如，如果是 `dfs.replication = 2`，则最小核心节点数为 2。
当您使用托管扩缩、自动扩缩或选择手动调整集群大小时，建议您将设置 `dfs.replication` 为 2 或更高。

在指标上设置警报的注意事项：
+ Amazon EMR 不提供有关 HDFS 或 YARN 的应用程序特定指标。我们建议您设置告警以监控主节点实例计数。使用以下 Amazon CloudWatch 指标配置警报：`MultiMasterInstanceGroupNodesRunning``MultiMasterInstanceGroupNodesRunningPercentage`、或`MultiMasterInstanceGroupNodesRequested`。 CloudWatch 将在主节点出现故障和更换时通知您。
  + 如果 `MultiMasterInstanceGroupNodesRunningPercentage` 低于 100% 且大于 50%，集群可能会丢失主节点。在这种情况下，Amazon EMR 将尝试替换主节点。
  + 如果 `MultiMasterInstanceGroupNodesRunningPercentage` 低于 50%，两个主节点可能会发生故障。在这种情况下，仲裁丢失，集群无法恢复。您必须手动将数据迁出此集群。

  有关更多信息，请参阅[在指标上设置警报](https://docs.aws.amazon.com/emr/latest/ManagementGuide/UsingEMR_ViewingMetrics.html#UsingEMR_ViewingMetrics_Alarm)。