使用终止保护 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用终止保护

在长时间运行的集群上启用终止保护时,您仍然可以终止集群,但您必须先明确地从集群中删除终止保护。这有助于确保 EC2 实例不会因事故或错误而关闭。如果集群可能在本地磁盘中存储了数据,而您又需要在这些实例终止前予以恢复,那么这种终止保护尤其有用。您可以在创建集群时启用终止保护,并可以更改运行的集群上的设置。

启用终止保护后,Amazon EMR API 中的 TerminateJobFlows 操作将不起作用。用户不能使用此 API 或 terminate-clusters 中的 Amazon CLI 命令终止集群。该 API 会返回错误,而 CLI 会通过非零返回代码退出。使用 Amazon EMR 控制台终止集群时,系统会提示您执行一个额外的步骤来关闭终止保护。

警告

终止保护不保证在发生人为错误或实施解决方法时保留数据 – 例如,使用 SSH 连接到实例时从命令行发出重新启动命令、实例上运行的应用程序或脚本发出重新启动命令,或者使用 Amazon EC2 或 Amazon EMR API 禁用终止保护。即使启用了终止保护,保存到实例存储的数据(包括 HDFS 数据)也可能会丢失。将数据输出写入 Amazon S3 位置,并根据您的业务连续性要求创建适当的备份策略。

终止保护不影响您使用以下任意操作扩展集群资源的能力:

终止保护和 Amazon EC2

启用终止保护的 Amazon EMR 集群已为集群中的所有 Amazon EC2 实例设置了 disableAPITermination 属性。如果终止请求源自 Amazon EMR,且实例的 Amazon EMR 和 Amazon EC2 设置相冲突,则 Amazon EMR 设置将覆盖 Amazon EC2 设置。例如,如果您使用 Amazon EC2 控制台启用一个已禁用终止保护的集群中的 Amazon EC2 实例上的终止保护,当您使用Amazon EMR 控制台、Amazon EMR 的 Amazon CLI 命令或 Amazon EMR API 终止集群时,Amazon EMR 会将 DisableApiTermination 设置为 false,并终止该实例以及其他实例。

重要

如果在具有终止保护功能的 Amazon EMR 集群中创建实例,并使用 Amazon EC2 API 或 Amazon CLI 命令来修改该实例,那么 DisableApiTermination 会设置为 false,之后 Amazon EC2 API 或 Amazon CLI 命令会执行 TerminateInstances 操作, Amazon EC2 实例也会终止。

终止保护和不正常的 YARN 节点

Amazon EMR 会定期检查集群中核心和任务 Amazon EC2 实例上运行的节点的 Apache Hadoop YARN 状态。运行状况由 NodeManager 运行状况检查程序服务报告。如果节点报告为 UNHEALTHY,那么 Amazon EMR 实例控制器会将该节点列入黑名单,并且在该节点再次恢复正常之前不会向其分配 YARN 容器。节点不正常的常见原因是,磁盘利用率超过 90%。有关识别不正常节点并进行恢复的更多信息,请参阅资源错误

如果节点保持 UNHEALTHY 状态超过 45 分钟,Amazon EMR 将根据终止保护的状态执行以下操作。

终止保护 结果

已启用(推荐)

Amazon EC2 核心实例仍处于黑名单中,并将继续计入集群容量。您可以连接到 Amazon EC2 核心实例以进行配置和数据恢复,并调整集群大小以增加容量。有关更多信息,请参阅资源错误

运行状况不佳的任务节点免受终止保护,并将被终止。

已禁用

Amazon EC2 实例已终止。Amazon EMR 根据实例组中实例的指定数量或实例机群的目标容量预置新实例。如果所有核心节点处于 UNHEALTHY 状态超过 45 分钟,集群将终止,并报告 NO_SLAVES_LEFT 状态。

重要

如果核心实例因状态不正常而被终止,那么 HDFS 数据可能会丢失。如果节点存储了没有复制到其他节点的数据块,那么这些块都将丢失,这可能会导致数据丢失。我们建议您使用终止保护,以便您可以在必要时连接到实例并恢复数据。

终止保护和步骤执行

当你启用步骤执行启用终止保护时,Amazon EMR 将忽略终止保护。

向集群提交步骤时,您可以设置 ActionOnFailure 属性,以确定步骤因错误而无法完成执行时发生的情况。此设置的可能值为 TERMINATE_CLUSTER(早期版本的值为 TERMINATE_JOB_FLOW)、CANCEL_AND_WAITCONTINUE。有关更多信息,请参阅使用 Amazon CLI 和控制台执行步骤

当其中 ActionOnFailure 设置为 CANCEL_AND_WAIT 的步骤失败时,如果已启用步骤执行,则集群会终止,且不会执行后续步骤。

当其中 ActionOnFailure 设置为 TERMINATE_CLUSTER 的步骤失败时,请使用下面的设置表来确定结果。

ActionOnFailure 步骤执行 终止保护 结果

TERMINATE_CLUSTER

已启用

已禁用

集群会终止

已启用

已启用

集群会终止

已禁用

已启用

集群继续运行

已禁用

已禁用

集群会终止

终止保护和 Spot 实例

当 Spot 价格上涨并超过最高 Spot 价格时,Amazon EMR 终止保护不会阻止 Amazon EC2 Spot 实例终止。

启动集群时配置终止保护

您可以使用控制台、Amazon CLI 或 API 在启动集群时启用或禁用终止保护。

默认终止保护设置取决于您启动集群的方式:

  • Amazon EMR 控制台 Quick Options (快速选项) – 默认情况下,禁用 Termination Protection (终止保护)。

  • Amazon EMR 控制台 Advanced Options (高级选项) – 默认情况下,启用 Termination Protection (终止保护)。

  • Amazon CLI aws emr create-cluster – 除非指定 --termination-protected,否则禁用 Termination Protection (终止保护)。

  • Amazon EMR API RunJobFlow 命令 – 除非 TerminationProtected 布尔值设定为 true,否则禁用 Termination Protection (终止保护)。

使用控制台创建集群时启用或禁用终止保护

  1. 通过以下链接打开 Amazon EMR 控制台:https://console.aws.amazon.com/elasticmapreduce/

  2. 选择创建集群

  3. 选择 Go to advanced options (转到高级选项)

  4. 对于 Step 3: General Cluster Settings (步骤 3: 常规集群设置),在 General Options (常规选项) 下,确保选中 Termination protection (终止保护) 以将其启用,或清除选中此选项以将其禁用。

    
							针对集群创建的 Advanced Options (高级选项) 中的 Termination Protection (终止保护) 设置。
  5. 选择适用于您的应用程序的其他设置,再选择 Next (下一步),然后完成集群配置。

使用 Amazon CLI 创建集群时启用终止保护

  • 使用 Amazon CLI 时,您可以通过使用带有 create-cluster 参数的 --termination-protected 命令启动启用了终止保护的集群。默认情况下,终止保护处于禁用状态。

    以下示例创建启用了终止保护的集群:

    注意

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

    aws emr create-cluster --name "TerminationProtectedCluster" --release-label emr-5.33.0 \ --applications Name=Hadoop Name=Hive Name=Pig \ --use-default-roles --ec2-attributes KeyName=myKey --instance-type m5.xlarge \ --instance-count 3 --termination-protected

    有关在 Amazon CLI 中使用 Amazon EMR 命令的更多信息,请参阅https://docs.amazonaws.cn/cli/latest/reference/emr

为正在运行的集群配置终止保护

您可以使用控制台或 Amazon CLI 为运行中的集群配置终止保护。

使用控制台为运行的集群启用或禁用终止保护

  1. 通过以下链接打开 Amazon EMR 控制台:https://console.aws.amazon.com/elasticmapreduce/

  2. Clusters (集群) 页面上,选择集群的 Name (名称)

  3. Summary (摘要) 选项卡上,对于 Termination protection (终止保护),选择 Change (更改)

  4. 要启用终止保护,请选择 On (开启)。要禁用终止保护,请选择 Off (关闭)。然后选择绿色复选标记进行确认。

    
							确认终止保护更改

使用 Amazon CLI 为运行的集群启用或禁用终止保护

  • 要使用 Amazon CLI 在运行的集群上启用终止保护,请键入带有 modify-cluster-attributes 参数的 --termination-protected 命令。要禁用终止保护,请使用 --no-termination-protected 参数。

    以下示例在 ID 为 j-3KVTXXXXXX7UG 的集群上启用了终止保护:

    aws emr modify-cluster-attributes --cluster-id j-3KVTXXXXXX7UG --termination-protected

    以下示例在相同集群上禁用了终止保护:

    aws emr modify-cluster-attributes --cluster-id j-3KVTXXXXXX7UG --no-termination-protected