使用自动终止策略 - Amazon EMR

使用自动终止策略

自动终止策略允许您编排集群清理,而无需监控和手动终止未使用的集群。向集群添加自动终止策略时,您可以指定空闲时间,在此时间之后集群应自动关闭。

根据发布版本,Amazon EMR 使用不同的条件将集群标记为空闲。下表概述了 Amazon EMR 如何确定集群空闲状态。

当您使用以下应用程序时: 当符合以下条件时,集群被视为处于空闲状态:
Amazon EMR 版本 6.4.0 及更高版本
  • 没有活跃的 YARN 应用程序

  • HDFS 利用率低于 10%

  • 没有活跃的 EMR 笔记本或 EMR Studio 连接

  • 没有群集上的应用程序用户界面正被使用

Amazon EMR 版本 5.30.0 - 5.33.0 和 6.1.0 - 6.3.0
  • 没有活跃的 YARN 应用程序

  • HDFS 利用率低于 10%

  • 集群没有活跃的 Spark 作业

注意

Amazon EMR 将集群标记为空闲,即使您有活跃的 Python3 内核,也可能会自动终止该集群。这是因为执行 Python3 内核不会在该集群上提交 Spark 作业。要将自动终止与 Python3 内核配合使用,我们建议您使用 Amazon EMR 版本 6.4.0 或更高版本。

注意

Amazon EMR 6.4.0 及更高版本支持用于检测主节点 (master node) 上的活动的集群文件:/emr/metricscollector/isbusy。当你使用集群运行 shell 脚本或非 YARN 应用程序时,您可以定期接触或更新isbusy,以告知Amazon EMR 集群不处于空闲状态。

您可以在创建集群时附加自动终止策略,也可以将策略添加到现有集群。要更改或禁用自动终止,您可以更新或删除策略。

注意事项

在使用自动终止策略之前,请注意以下功能和限制:

  • Amazon EMR 5.30.0 和 6.1.0 及更高版本支持自动终止。

  • 以下 AWS 区域 提供自动终止:美国东部(弗吉尼亚北部、俄亥俄)、美国西部(加利福尼亚北部、俄勒冈)、亚太地区(孟买、首尔、新加坡、悉尼、东京、香港)、加拿大(中部)、中国(北京、宁夏)、欧洲(爱尔兰、法兰克福、伦敦、巴黎、斯德哥尔摩、米兰)、南美洲(圣保罗)、中东(巴林)和非洲(开普敦)。

  • 如果您没有指定金额,则空闲超时默认为 60 分钟(1 小时)。您可以指定最小空闲超时为 1 分钟,最长空闲超时时间为 7 天。

  • 在 Amazon EMR 6.4.0 及更高版本,当您使用 Amazon EMR 控制台创建新集群时,默认情况下,会启用自动终止。

  • 当您为集群启用自动终止时,Amazon EMR 将发布高分辨率 Amazon CloudWatch 指标。您可以使用这些指标来跟踪集群的活动和空闲状态。有关更多信息,请参阅集群容量指标

  • 当您使用基于非基于 YARN 的应用程序(例如 Presto、Trino 或 HBase)时,将不支持自动终止。

  • 要使用自动终止,指标收集器进程必须能够连接到公有 API 端点,以便在 API Gateway 中执行自动终止。如果您通过 Amazon Virtual Private Cloud 使用私有 DNS 名称,自动终止将无法正常运行。为确保自动终止正常运行,我们建议您执行以下操作之一:

  • 在 EMR 5.30.0 及更高版本上,如果您将主安全组默认的 Allow All 出站规则删除为 0.0.0.0/,则您必须至少添加一条规则,以允许到您安全组的出站 TCP 连接,从而在端口 9443 上访问服务。您的服务访问安全组应允许来自主安全组端口 9443 上的入站 TCP 流量。有关配置安全组的更多信息,请参阅《适用于主实例(私有子网)的 Amazon EMR 托管式安全组》。

使用自动终止的权限

在应用和管理 Amazon EMR 的自动终止策略之前,您需要以下示例 IAM 权限策略中列出的权限。

{ "Version": "2012-10-17", "Statement": { "Sid": "AllowAutoTerminationPolicyActions", "Effect": "Allow", "Action": [ "elasticmapreduce:PutAutoTerminationPolicy", "elasticmapreduce:GetAutoTerminationPolicy", "elasticmapreduce:RemoveAutoTerminationPolicy" ], "Resource": "<your-resources>" } }

附加、更新或删除自动终止策略

本部分包括从 Amazon EMR 集群附加、更新或删除自动终止策略的说明。在使用自动终止策略之前,请确保您有必要的 IAM 权限。请参阅使用自动终止的权限

Console

在创建集群时,附加自动终止策略

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

  2. 选择 Create cluster (创建集群)

  3. 硬件配置下,选择自动终止

  4. 指定空闲时数和分钟数,在此之后,集群应自动终止。默认空闲时间为 1 小时。

  5. 选择适用于您的应用程序的其它设置,然后选择 Create Cluster (创建集群)

在创建 EMR Notebooks 时,附加自动终止策略

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

  2. 选择 Notebook instances (笔记本实例),然后选择 Create notebook instance (创建笔记本实例)

  3. 选择创建集群

  4. 选择启用自动终止,然后指定空闲时数和分钟数,之后集群应自动终止。默认空闲时间为 1 小时。

  5. 选择适用于 EMR Notebooks 的其他设置,然后选择 Create Cluster (创建集群)

在正在运行的集群上附加、更新或删除自动终止策略

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

  2. 选择集群,然后选择要更新的集群。

  3. 在 Cluster Details (集群详细信息) 页面上,选择 Hardware (硬件)标签。

  4. 选择或清除启用自动终止以启用或禁用该功能。如果启用自动终止,请指定空闲时数和分钟数,在此之后,集群应自动终止。

AWS CLI

开始之前

在您使用自动终止策略之前,我们建议您更新到 AWS CLI 的最新版本。有关说明,请参阅安装、更新和卸载 AWS CLI

使用AWS CLI附加或更新自动终止策略

  • 您可以使用aws emr put-auto-termination-policy命令附加或更新集群上的自动终止策略。

    以下示例指定了 3600 秒空闲时间超时。如果不指定空闲时间超时,该值默认为 1 小时。

    aws emr put-auto-termination-policy \ --cluster-id <your-cluster-id> \ --auto-termination-policy IdleTimeout=3600
    注意

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

    当你使用aws emr create-cluster命令时,您还可以为--auto-termination-policy指定值。有关在 AWS CLI 中使用 Amazon EMR 命令的更多信息,请参阅 AWS CLI命令参考

使用AWS CLI删除西东终止策略

  • 使用aws emr remove-auto-termination-policy命令从集群中删除自动终止策略。有关在 AWS CLI 中使用 Amazon EMR 命令的更多信息,请参阅 AWS CLI命令参考

    aws emr remove-auto-termination-policy --cluster-id <your-cluster-id>