使用 Amazon EMR 替换运行状况不佳的节点 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon EMR 替换运行状况不佳的节点

Amazon EMR 会定期使用 Apache Hadoop 中的 NodeManager 运行状况检查程序服务监控 Amazon EC2 上的 Amazon EMR 集群中核心节点的状态。如果某节点未正常运行,则该节点将被标记为运行状况不佳,并且运行状况检查程序会将该节点报告给 Amazon EMR 控制器。Amazon EMR 控制器会将该节点添加到拒绝列表中,阻止该节点接收新的 YARN 应用程序,直到该节点的状态得到改善。

注意

节点运行状况不佳的一个常见原因是磁盘空间不足。有关核心节点的磁盘空间即将耗尽的更多信息,请参阅以下 re:Post 知识中心文章:为什么我的 Amazon EMR 集群中的核心节点会耗尽磁盘空间?

注意

Hadoop 确实提供了运行自定义节点运行状况检查的功能。Apache Hadoop 文档的 NodeManager 部分对此进行了更详细的解释。

您可以选择 Amazon EMR 是应终止运行状况不佳的节点,还是将其保留在集群中。如果关闭运行状况不佳的节点替换,则它们将保留在拒绝列表中,并继续计入集群容量。您仍然可以连接到 Amazon EC2 核心实例进行配置和恢复,因此如果您想增加容量,则可以调整集群大小。有关节点更换和终止如何工作的更多信息,请参阅使用终止保护

如果开启运行状况不佳的节点替换,Amazon EMR 会终止运行状况不佳的核心节点,并根据实例组中的实例数或实例集的目标容量预置新实例。如果任何节点运行状况不佳的时间超过 45 分钟,Amazon EMR 将正常替换这些节点。如果某节点的正常停用未在一小时内完成,则该节点将被强制终止,除非终止它会使集群低于复制因子或 HDFS 容量限制。

重要

请注意,节点正常停用或终止之前所花费的时间可能会发生变化。

尽管运行状况不佳的节点替换可以显著降低数据丢失的可能性,但是它并不能完全消除风险。在正常替换运行状况不佳的核心实例期间,HDFS 数据可能会永久丢失。我们建议您始终备份数据。

有关识别运行状况不佳的节点和恢复的更多信息,请参阅资源错误。此外,有关维护集群运行状况的更多最佳实践,请参阅以下文档了解资源错误 Amazon EMR 集群终止并显示 NO_SLAVE_LEFT,核心节点为 FAILED_BY_MASTER

Amazon EMR 会发布 Amazon CloudWatch Events 以替换运行状况不佳的节点,让您可以跟踪运行状况不佳的核心实例的情况。有关更多信息,请参阅运行状况不佳的节点替换事件

默认节点替换和终止保护设置

运行状况不佳的节点替换适用于所有 Amazon EMR 发行版,但默认设置取决于您选择的发行版标签。您可以在创建新集群时配置运行状况不佳的节点替换,或随时进入集群配置,更改任意设置。

如果创建的单节点集群或高可用性集群运行 Amazon EMR 7.0 或更低版本,运行状况不佳的节点替换的默认设置取决于终止保护:

  • 启用终止保护会禁用运行状况不佳的节点替换。

  • 禁用终止保护会启用运行状况不佳的节点替换。

启动集群时配置运行状况不佳的节点替换

您可以使用控制台、Amazon CLI 或 API 在启动集群时启用或禁用运行状况不佳的节点替换。

默认的运行状况不佳的节点替换设置取决于您启动集群的方式:

  • Amazon EMR 控制台:运行状况不佳的节点替换默认处于启用状态。

  • Amazon CLI aws emr create-cluster:除非指定 --no-unhealthy-node-replacement,否则运行状况不佳的节点默认处于启用状态。

  • Amazon EMR RunJobFlow API 命令:除非将 UnhealthyNodeReplacement 布尔值设置为 TrueFalse,否则运行状况不佳的节点替换默认处于启用状态。

Console
使用控制台创建集群时开启或关闭运行状况不佳的节点替换
  1. 登录 Amazon Web Services 管理控制台 并打开 Amazon EMR 控制台,网址为 https://console.aws.amazon.com/emr

  2. 在左侧导航窗格中的 EMR on EC2 下,选择 Clusters(集群),然后选择 Create cluster(创建集群)。

  3. 对于 EMR 发行版本,请选择所需的 Amazon EMR 发行版标签。

  4. 集群终止和节点替换下,确保已预先选择运行状况不佳的节点替换(建议),或者清除该选项以将其关闭。

  5. 选择适用于集群的任何其他选项。

  6. 要启动集群,选择 Create cluster(创建集群)。

Amazon CLI
使用 Amazon CLI 创建集群时开启或关闭运行状况不佳的节点替换
  • 借助 Amazon CLI,您可以使用带有 --unhealthy-node-replacement 参数的 create-cluster 命令启动已启用运行状况不佳的节点替换的集群。运行状况不佳的节点替换默认处于开启状态。

    以下示例创建一个集群,该集群启用了运行状况不佳的节点替换:

    注意

    为了便于读取,包含 Linux 行继续符(\)。它们可以通过 Linux 命令删除或使用。对于 Windows,请将它们删除或替换为脱字号(^)。

    aws emr create-cluster --name "SampleCluster" --release-label emr-7.10.0 \ --applications Name=Hadoop Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge \ --instance-count 3 --unhealthy-node-replacement

    有关在 Amazon CLI 中使用 Amazon EMR 命令的更多信息,请参阅 Amazon EMR Amazon CLI 命令

在正在运行的集群中配置运行状况不佳的节点替换

使用控制台、Amazon CLI 或 API 为正在运行的集群开启或关闭运行状况不佳的节点替换。

Console
使用控制台为正在运行的集群开启或关闭运行状况不佳的节点替换
  1. 登录 Amazon Web Services 管理控制台 并打开 Amazon EMR 控制台,网址为 https://console.aws.amazon.com/emr

  2. 在左侧导航窗格中的 EMR on EC2 下,选择 Clusters(集群),然后选择要更新的集群。

  3. 在集群详细信息页面的属性选项卡上,找到集群终止和节点替换,然后选择编辑

  4. 选中或清除运行状况不佳的节点替换复选框以开启或关闭该功能。然后选择 Save changes(保存更改)进行确认。

Amazon CLI
使用 Amazon CLI 为正在运行的集群开启或关闭运行状况不佳的节点替换
  • 要使用 Amazon CLI 在正在运行的集群上开启运行状况不佳的节点替换,请使用带 --unhealthy-node-replacement 参数的 modify-cluster-attributes 命令。要禁用终止保护,请使用 --no-unhealthy-node-replacement 参数。

    以下示例在 ID 为 j-3KVTXXXXXX7UG 的集群上开启了运行状况不佳的节点替换:

    aws emr modify-cluster-attributes --cluster-id j-3KVTXXXXXX7UG --unhealthy-node-replacement

    以下示例在同一集群上关闭了运行状况不佳的节点替换:

    aws emr modify-cluster-attributes --cluster-id j-3KVTXXXXXX7UG --no-unhealthy-node-replacement