本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用终止保护功能防止 Amazon EMR 集群意外关闭
终止保护可防止集群意外终止,这对于处理关键工作负载的长时间运行的集群特别有用。在长时间运行的集群上启用终止保护时,您仍然可以终止集群,但您必须先明确地从集群中删除终止保护。这有助于确保 EC2 实例不会因意外或错误而关闭。您可以在创建集群时启用终止保护,并可以更改运行的集群上的设置。
启用终止保护后,Amazon EMR API 中的 TerminateJobFlows
操作将不起作用。用户不能使用此 API 或 Amazon CLI中的 terminate-clusters
命令终止集群。该 API 会返回错误,而 CLI 会通过非零返回代码退出。使用 Amazon EMR 控制台终止集群时,系统会提示您采取额外步骤来关闭终止保护。
警告
终止保护不能保证在出现人为错误或变通办法时保留数据,例如,如果使用 SSH 连接到实例时从命令行发出重启命令,实例上运行的应用程序或脚本发出重启命令,或者使用 Amazon 或 A EC2 mazon EMR API 禁用终止保护。如果您运行的是 Amazon EMR 7.1 及更高版本,而实例运行状况不佳且无法恢复,则也是如此。即使启用了终止保护,保存到实例存储的数据(包括 HDFS 数据)也可能会丢失。将数据输出写入 Amazon S3 位置,并根据您的业务连续性要求创建适当的备份策略。
终止保护不影响您使用以下任意操作扩展集群资源的能力:
-
使用 Amazon Web Services Management Console 或 Amazon CLI手动调整集群的大小。有关更多信息,请参阅 手动调整正在运行的 Amazon EMR 集群的大小。
-
搭配使用缩减策略和自动扩展,将实例从核心或任务实例组中删除。有关更多信息,请参阅将自动扩展与 Amazon EMR 中实例组的自定义策略结合使用。
-
通过减少目标容量,将实例从实例队列中删除。有关更多信息,请参阅 实例集选项。
终止保护和 Amazon EC2
Amazon EMR 集群中的终止保护设置与集群中所有 Amazon EC2 实例的DisableApiTermination
属性相对应。例如,如果您在 EMR 集群中启用终止保护,则 Amazon EMR 会自动为 EMR 集群 EC2 中的所有实例设置DisableApiTermination
为 true。如果禁用终止保护,也同样适用。DisableApiTermination
对于 EMR 集群中的所有 EC2 实例,Amazon EMR 会自动设置为 false。如果您终止或缩小了 Amazon EMR 中的集群,并且某个 EC2 实例的亚马逊 EC2 设置存在冲突,则 Amazon EMR 会优先考虑亚马逊 EMR 设置而不是亚马逊 EC2 中的DisableApiStop
和DisableApiTermination
设置,并继续终止该实例。 EC2
例如,您可以使用 Amazon EC2 控制台在禁用终止保护的 EMR 集群中的 Amazon EC2 实例上启用终止保护。如果您使用 Amazon EMR 控制台、或 Amazon EMR API 终止或缩减集群 Amazon CLI,则 Amazon EMR 会覆盖该DisableApiTermination
设置,将其设置为 false,然后终止该实例以及其他实例。
您还可以使用 Amazon EC2 控制台在禁用终止保护的 EMR 集群中的 Amazon EC2 实例上启用停止保护。如果您终止或缩小集群,Amazon EMR 将在亚马逊中设置DisableApiStop
为 false, EC2 并终止该实例以及其他实例。
只有在您终止或缩减集群时,Amazon EMR 才会覆盖 DisableApiStop
设置。当您在 EMR 集群中启用或禁用终止保护时,Amazon EMR 不会更改相应 EMR 集群中任何 EC2 实例的disableApiStop
设置。
重要
如果您在具有终止保护的 Amazon EMR 集群中创建了一个实例,然后使用 Amazon EC2 API 或 Amazon CLI 命令修改实例false
,然后 Amazon EC2 API 或 Amazon CLI 命令运行该TerminateInstances
操作,DisableApiTermination
则该亚马逊 EC2 实例将终止。
终止保护和不正常的 YARN 节点
Amazon EMR 会定期检查集群中核心和任务亚马逊 EC2 实例上运行的节点的 Apache Hadoop YARN 状态。健康状况由运行状况检查器服务UNHEALTHY
,Amazon EMR 实例控制器将节点添加到拒绝列表,并且在恢复正常之前,不会为其分配 YARN 容器。根据终止保护、运行状况不佳的节点替换和 Amazon EMR 发行版的状态,Amazon EMR 将替换运行状况不佳的实例或停止向实例分配控制器。
终止保护和步骤执行后终止
当您启用步骤执行后终止并启用终止保护时,Amazon EMR 将忽略终止保护。
向集群提交步骤时,您可以设置 ActionOnFailure
属性,以确定步骤因错误而无法完成执行时发生的情况。此设置的可能值为 TERMINATE_CLUSTER
(早期版本的值为 TERMINATE_JOB_FLOW
)、CANCEL_AND_WAIT
和 CONTINUE
。有关更多信息,请参阅 将工作提交到 Amazon EMR 集群。
当 ActionOnFailure
设置为 CANCEL_AND_WAIT
的步骤失败时,如果已启用步骤执行后终止,则集群会终止,且不会执行后续步骤。
当其中 ActionOnFailure
设置为 TERMINATE_CLUSTER
的步骤失败时,请使用下面的设置表来确定结果。
ActionOnFailure | 步骤执行后终止 | 终止保护 | 结果 |
---|---|---|---|
|
已启用 |
已禁用 |
集群会终止 |
已启用 |
已启用 |
集群会终止 |
|
已禁用 |
已启用 |
集群继续运行 |
|
已禁用 |
已禁用 |
集群会终止 |
终止保护和竞价型实例
Amazon EMR 终止保护不会阻止亚马逊 EC2 竞价型实例在现货价格上涨至最高现货价格之上时终止。
启动集群时配置终止保护
在使用控制台、或 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
为正在运行的集群配置终止保护
您可以使用控制台或 Amazon CLI为运行中的集群配置终止保护。