使用终止保护
在长时间运行的集群上启用终止保护时,您仍然可以终止集群,但您必须先明确地从集群中删除终止保护。这有助于确保 EC2 实例不会因事故或错误而关闭。如果集群可能在本地磁盘中存储了数据,而您又需要在这些实例终止前予以恢复,那么这种终止保护尤其有用。您可以在创建集群时启用终止保护,并可以更改运行的集群上的设置。
启用终止保护后,Amazon EMR API 中的 TerminateJobFlows
操作将不起作用。用户不能使用此 API 或 Amazon CLI 中的 terminate-clusters
命令终止集群。该 API 会返回错误,而 CLI 会通过非零返回代码退出。使用 Amazon EMR 控制台终止集群时,系统会提示您采取额外步骤来关闭终止保护。
终止保护不保证在发生人为错误或实施解决方法时保留数据 – 例如,使用 SSH 连接到实例时从命令行发出重新启动命令、实例上运行的应用程序或脚本发出重新启动命令,或者使用 Amazon EC2 或 Amazon EMR API 禁用终止保护。即使启用了终止保护,保存到实例存储的数据(包括 HDFS 数据)也可能会丢失。将数据输出写入 Amazon S3 位置,并根据您的业务连续性要求创建适当的备份策略。
终止保护不影响您使用以下任意操作扩展集群资源的能力:
-
使用 Amazon Web Services Management Console 或 Amazon CLI 手动调整集群大小。有关更多信息,请参阅手动调整正在运行的集群的大小。
-
搭配使用缩减策略和自动扩展,将实例从核心或任务实例组中删除。有关更多信息,请参阅将自动伸缩与实例组的自定义策略结合使用 。
-
通过减少目标容量,将实例从实例队列中删除。有关更多信息,请参阅实例集选项。
终止保护和 Amazon EC2
启用终止保护的 Amazon EMR 集群已为集群中的所有 Amazon EC2 实例设置了 disableAPITermination
属性。如果终止请求源自 Amazon EMR,且实例的 Amazon EMR 和 Amazon EC2 设置相冲突,则 Amazon EMR 设置将覆盖 Amazon EC2 设置。例如,假设您使用 Amazon EC2 控制台在 disabled(已禁用)终止保护的集群中的 Amazon EC2 实例上 enable(启用)终止保护,则当您使用 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 根据实例组中实例的指定数量或实例集的目标容量预置新实例。如果所有核心节点处于 如果核心实例因状态不正常而被终止,那么 HDFS 数据可能会丢失。如果节点存储了没有复制到其它节点的数据块,那么这些块都将丢失,这可能会导致数据丢失。我们建议您使用终止保护,以便您可以在必要时连接到实例并恢复数据。 |
终止保护和步骤执行
当你启用步骤执行并启用终止保护时,Amazon EMR 将忽略终止保护。
向集群提交步骤时,您可以设置 ActionOnFailure
属性,以确定步骤因错误而无法完成执行时发生的情况。此设置的可能值为 TERMINATE_CLUSTER
(早期版本的值为 TERMINATE_JOB_FLOW
)、CANCEL_AND_WAIT
和 CONTINUE
。有关更多信息,请参阅向集群提交工作。
当其中 ActionOnFailure
设置为 CANCEL_AND_WAIT
的步骤失败时,如果已启用步骤执行,则集群会终止,且不会执行后续步骤。
当其中 ActionOnFailure
设置为 TERMINATE_CLUSTER
的步骤失败时,请使用下面的设置表来确定结果。
ActionOnFailure | 步骤执行 | 终止保护 | 结果 |
---|---|---|---|
|
Enabled |
已禁用 |
集群会终止 |
Enabled |
Enabled |
集群会终止 |
|
已禁用 |
Enabled |
集群继续运行 |
|
已禁用 |
已禁用 |
集群会终止 |
终止保护和竞价型实例
当 Spot 价格上涨并超过最高 Spot 价格时,Amazon EMR 终止保护不会阻止 Amazon EC2 Spot 实例终止。
启动集群时配置终止保护
您可以使用控制台、Amazon CLI 或 API 在启动集群时启用或禁用终止保护。
默认终止保护设置取决于您启动集群的方式:
-
Amazon EMR 控制台(新):默认情况下,“终止保护”为已启用。
-
Amazon EMR 控制台(旧)快速选项:默认情况下,“终止保护”为禁用。
-
Amazon EMR 控制台(旧)高级选项:默认情况下,“终止保护”为已启用。
-
Amazon CLI
aws emr create-cluster
– 除非指定--termination-protected
,否则 Termination Protection (终止保护) 是禁用的。 -
Amazon EMR API RunJobFlow 命令 – 除非
TerminationProtected
布尔值设定为true
,否则 Termination Protection (终止保护) 是禁用的。
我们重新设计了 Amazon EMR 控制台,以便其易于使用。请参阅 控制台中的新增功能,以了解有关新旧控制台体验差异的信息。
为正在运行的集群配置终止保护
您可以使用控制台或 Amazon CLI 为运行中的集群配置终止保护。
我们重新设计了 Amazon EMR 控制台,以便其易于使用。请参阅 控制台中的新增功能,以了解有关新旧控制台体验差异的信息。