Amazon EMR
管理指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

管理集群的终止

终止保护有助于确保任务流中的 EC2 实例不会因意外事故或者错误而关闭。如果集群中包含的数据位于实例存储中,而您又必须在这些实例终止前予以恢复,那么这种保护尤其有用。当没有启用终止保护时,您可以通过调用 TerminateJobFlows API、通过 Amazon EMR 控制台或使用命令行界面终止集群。另外,主节点可能会终止没有响应或返回了错误的节点。

警告

终止保护有助于保护集群实例不被意外关闭,但它不保证在发生人为错误时保留数据,例如,如果在连接到实例时从命令行发出重启命令,或者如果禁用终止保护,并通过 API、AWS CLI 或 AWS Management Console 进行关闭或重启调用。当实例关闭时,保存到实例上的临时存储的数据 (如 HDFS 数据) 将丢失将无法恢复。将关键数据备份到 Amazon S3,并满足您的业务连续性要求。

默认情况下,在使用控制台启动集群时会启用终止保护。默认情况下,在使用 CLI 或 API 启动集群时会禁用终止保护。当启用终止保护时,您必须先从集群中显式删除终止保护,然后才能终止集群。启用终止保护后,TerminateJobFlows 无法终止集群,用户也无法使用 CLI 终止集群。系统会提示使用 Amazon EMR 控制台终止集群的用户在终止集群前执行一个额外的步骤来关闭终止保护。

如果您试图通过 API 或 CLI 终止一个受到保护的集群,该 API 会返回错误,而 CLI 会通过非零返回代码退出。

向集群提交步骤时,ActionOnFailure 设置会确定集群为响应任何错误而执行的操作。此设置的可能值为:

  • TERMINATE_JOB_FLOW:如果步骤失败,则终止集群。如果集群启用了终止保护并且禁用了自动终止,则它不会终止。

  • CANCEL_AND_WAIT:如果步骤失败,则取消剩余步骤。如果集群禁用了自动终止,则集群不会终止。

  • CONTINUE:如果步骤失败,则继续到下一个步骤。

Amazon EMR 和 Amazon EC2 中的终止保护

启用终止保护的 EMR 集群已为集群中的所有 EC2 实例设置了 disableAPITermination 属性。如果 Amazon EC2 中的终止保护设置与 Amazon EMR 中的实例设置之间存在冲突,则 Amazon EMR 设置将覆盖给定实例上的 Amazon EC2 设置。例如,如果您使用 Amazon EC2 控制台启用一个已禁用终止保护的 Amazon EMR 集群中 EC2 实例上的终止保护,Amazon EMR 会关闭该 EC2 实例上的终止保护,并在集群的其他部分终止时关闭该实例。

终止保护和 Spot 实例

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

终止保护和自动终止

启用自动终止会创建暂时性集群。集群会在最后一步成功完成时自动终止,即使启用了终止保护也是如此。

禁用自动终止会使集群中的实例在步骤成功完成之后继续存在,但是仍然允许通过用户操作、由于错误以及通过调用 TerminateJobFlows (如果禁用了终止保护) 而终止集群。

注意

默认情况下,会为使用控制台和 CLI 启动的集群禁用自动终止。使用 API 启动的集群会启用自动终止。

为新集群配置终止保护

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

使用控制台为新集群配置终止保护

  1. Open the Amazon EMR console at https://console.amazonaws.cn/elasticmapreduce/.

  2. 选择 Create cluster

  3. 选择 Go to advanced options

  4. Cluster Configuration (集群配置) 区段中,将 Termination protection (终止保护) 字段设置为 Yes (是) 以启用保护,或将该字段设置为 No (否) 以禁用保护。默认情况下会启用终止保护。

     终止保护设置
  5. 继续创建集群.

使用 AWS CLI 为新集群配置终止保护

使用 AWS CLI 时,可以通过键入带有 --termination-protected 参数的 create-cluster 命令启动启用了终止保护的集群。默认情况下,在使用 AWS CLI 启动集群时会禁用终止保护。还可以使用 --no-termination-protected 参数禁用终止保护。

  • 要启动受保护的集群,请键入以下命令并将 myKey 替换为您的 EC2 密钥对的名称。

    aws emr create-cluster --name "Test cluster" --release-label emr-4.0.0 --applications Name=Hadoop Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m4.large --instance-count 3 --termination-protected

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

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

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

使用控制台为正在运行的集群配置终止保护

  1. Open the Amazon EMR console at https://console.amazonaws.cn/elasticmapreduce/.

  2. Cluster List 页面上,选择您的集群的链接。

  3. Cluster Details 页面上的 Summary 部分中,对于 Termination protection,选择 Change

  4. 要启用终止保护,请选择 On,然后选中复选标记图标。或者,选择 Off 以禁用它。

     确认终止保护更改

使用 AWS CLI 为正在运行的集群配置终止保护

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

  • 键入以下命令以在正在运行的集群上启用终止保护。

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

    要禁用终止保护,请键入:

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