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

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

使用终止保护

终止保护可保护您的集群免遭意外终止,这对于处理关键工作负载的长时间运行的集群特别有用。在长时间运行的集群上启用终止保护时,您仍然可以终止集群,但您必须先明确地从集群中删除终止保护。这有助于确保 EC2 实例不会因事故或错误而关闭。您可以在创建集群时启用终止保护,并可以更改运行的集群上的设置。

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

警告

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

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

终止保护和 Amazon EC2

Amazon EMR 集群中的终止保护设置与集群中所有 Amazon EC2 实例的DisableApiTermination属性相对应。例如,如果您在 EMR 集群中启用终止保护,则 Amazon EMR 会自动为 EMR 集群中的所有 EC2 实例设置DisableApiTermination为 true。如果您禁用终止保护,则同样适用。对于 EMR 集群中的所有 EC2 实例DisableApiTermination,Amazon EMR 会自动设置为 false。如果您终止或缩小了 Amazon EMR 中的集群,并且某个 EC2 实例的 Amazon EC2 设置存在冲突,则 Amazon EMR 会优先考虑亚马逊 EMR 设置而不是亚马逊 EC2 DisableApiTermination 中的和DisableApiStop设置,并继续终止该 EC2 实例。

例如,您可以使用 Amazon EC2 控制台在禁用终止保护的 EMR 集群中的 Amazon EC2 实例上启用终止保护。如果您使用 Amazon EMR 控制台、或 Amazon EMR API 终止或缩减集群 Amazon CLI,则 Amazon EMR 会覆盖该DisableApiTermination设置,将其设置为 false,然后终止该实例以及其他实例。

您还可以使用 Amazon EC2 控制台在禁用终止保护的 EMR 集群中的 Amazon EC2 实例上启用停止保护。如果您终止或缩小集群,Amazon EMR 会在 Amazon EC2 中设置DisableApiStop为 false,并终止该实例以及其他实例。

只有在您终止或缩小集群规模时,Amazon EMR 才会覆盖该DisableApiStop设置。当您在 EMR 集群中启用或禁用终止保护时,Amazon EMR 不会更改相应的 EMR 集群中任何 EC2 实例的disableApiStop设置。

重要

如果您在具有终止保护的 Amazon EMR 集群中创建了一个实例,然后使用 Amazon EC2 API 或 Amazon CLI 命令按原样修改实例,然后 Amazon EC2 API 或 Amazon CLI 命令运行该TerminateInstances操作,则 Amazon EC2 实例将终止。DisableApiTermination false

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

Amazon EMR 会定期检查集群中核心和任务 Amazon EC2 实例上运行的节点的 Apache Hadoop YARN 状态。健康状况由运行状况检查器服务报告。NodeManager 如果节点报告UNHEALTHY,Amazon EMR 实例控制器会将该节点添加到拒绝列表中,并且在节点恢复正常运行之前不会向其分配 YARN 容器。根据终止保护、不健康节点更换和 Amazon EMR 发布版本的状态,Amazon EMR 将替换运行状况不佳的实例或停止向该实例分配控制器。

终止保护和步骤执行后的终止

当您在步骤执行后启用终止启用终止保护时,Amazon EMR 会忽略终止保护。

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

如果配置为的步骤失败,则如果启用了步骤执行后终止功能,则集群将终止而不执行后续步骤。ActionOnFailure CANCEL_AND_WAIT

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

ActionOn失败 步骤执行后终止 终止保护 结果

TERMINATE_CLUSTER

已启用

已禁用

集群会终止

已启用

已启用

集群会终止

已禁用

已启用

集群继续运行

已禁用

已禁用

集群会终止

终止保护和竞价型实例

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

启动集群时配置终止保护

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

对于单节点群集,默认终止保护设置如下:

  • 通过 Amazon EMR 控制台启动集群-默认情况下终止保护处于禁用状态

  • 除非指定 Amazon CLI aws emr create-cluster终止保护,否则--termination-protected通过—启动集群将处于禁用状态

  • 通过 Amazon EMR API RunJobFlow 命令启动集群-除非将TerminationProtected布尔值设置为,否则终止保护将被禁用true

对于高可用性群集,默认终止保护设置如下:

  • 通过 Amazon EMR 控制台启动集群-默认启用终止保护。

  • 除非指定 Amazon CLI aws emr create-cluster终止保护,否则--termination-protected通过—启动集群将处于禁用状态

  • 通过 Amazon EMR API RunJobFlow 命令启动集群-除非将TerminationProtected布尔值设置为,否则终止保护将被禁用true

Console
使用控制台创建集群时打开或关闭终止保护
  1. 登录并打开亚马逊 EMR 控制台,网址为 https://console.aws.amazon.com/emr。 Amazon Web Services Management Console

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

  3. 对于 EMR release version(EMR 发行版),选择 emr-6.6.0 或更高版本。

  4. 在 “集群终止和节点替换” 下,确保已预先选择使用终止保护,或者清除该选项以将其关闭。

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

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

Amazon CLI
要在创建集群时使用开启或关闭终止保护 Amazon CLI
  • 使用 Amazon CLI,您可以使用带--termination-protected参数的create-cluster命令启动启用了终止保护的集群。默认情况下,终止保护处于禁用状态。

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

    注意

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

    aws emr create-cluster --name "TerminationProtectedCluster" --release-label emr-7.1.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 EMR 命令的更多信息 Amazon CLI,请参阅。https://docs.amazonaws.cn/cli/latest/reference/emr

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

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

Console
使用控制台为正在运行的集群开启或关闭终止保护
  1. 登录并打开亚马逊 EMR 控制台,网址为 https://console.aws.amazon.com/emr。 Amazon Web Services Management Console

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

  3. 在集群详细信息页面的 Properties(属性)选项卡上,找到 Cluster termination(集群终止),然后选择 Edit(编辑)。

  4. 选中或清除 Use termination protection(使用终止保护)复选框以打开或关闭该功能。然后选择 Save changes(保存更改)进行确认。

Amazon CLI
要为正在运行的集群开启或关闭终止保护,请使用 Amazon CLI
  • 要使用 Amazon CLI为正在运行的集群启用终止保护,请使用带有 --termination-protected 参数的 modify-cluster-attributes 命令。要禁用终止保护,请使用 --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