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

使用自动终止策略

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

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

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

  • HDFS 利用率低于 10%

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

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

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

  • 集群没有活跃的 Spark 作业

注意

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

注意

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

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

注意事项

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

  • 对于亚太地区(雅加达)区域,Amazon EMR 自动终止功能现已在 Amazon EMR 6.14.0 及更高版本中推出。

  • 在下列 Amazon Web Services 区域,Amazon EMR 5.30.0 和 6.1.0 及更高版本提供 Amazon EMR 自动终止功能:

    美国东部(弗吉尼亚州北部和俄亥俄州)、美国西部(俄勒冈州和加利福尼亚州北部)、南美洲(圣保罗)、欧洲地区(法兰克福、爱尔兰、伦敦、米兰、巴黎和斯德哥尔摩)、加拿大(中部)、亚太地区(香港、孟买、首尔、新加坡、悉尼和东京)、中东(巴林)、非洲(开普敦)、Amazon GovCloud(美国东部)、Amazon GovCloud(美国西部)、中国(北京,由光环新网运营)和中国(宁夏,由西云数据运营)。

  • 如果您没有指定金额,则空闲超时默认为 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 托管安全组

使用自动终止的权限

您需要将以下示例 IAM 权限策略中列出的权限附加到管理您的 EMR 集群的 IAM 资源,然后才能应用和管理 Amazon EMR 的自动终止策略。

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

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

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

注意

我们重新设计了 Amazon EMR 控制台,以便其易于使用。请参阅 控制台中的新增功能,以了解有关新旧控制台体验差异的信息。

New console
在使用新控制台创建集群时,附加自动终止策略
  1. 登录 Amazon Web Services Management Console 并打开 Amazon EMR 控制台,网址为 https://console.aws.amazon.com/emr

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

  3. Cluster termination(集群终止)下,选择 Terminate cluster after idle time(空闲时间后终止集群)。

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

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

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

使用新控制台在正在运行的集群上附加、更新或删除自动终止策略
  1. 登录 Amazon Web Services Management Console 并打开 Amazon EMR 控制台,网址为 https://console.aws.amazon.com/emr

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

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

  4. 选择或清除 Enable auto-termination(启用自动终止)以打开或关闭该功能。如果启用自动终止,请指定空闲时数和分钟数,在此之后,集群将自动终止。然后选择 Save changes(保存更改)进行确认。

Old console
在使用旧控制台创建集群时,附加自动终止策略
  1. 导航到 Amazon EMR 新控制台,然后从侧面导航栏中选择切换到旧控制台。有关切换到旧控制台后预期情况的更多信息,请参阅 Using the old console

  2. 选择创建集群

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

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

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

使用旧控制台在正在运行的集群上附加、更新或删除自动终止策略
  1. 导航到 Amazon EMR 新控制台,然后从侧面导航栏中选择切换到旧控制台。有关切换到旧控制台后预期情况的更多信息,请参阅 Using the old console

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

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

  4. 选择或清除 Enable auto-termination(启用自动终止)以打开或关闭该功能。如果启用自动终止,请指定空闲时数和分钟数,在此之后,集群将自动终止。

Amazon CLI

开始之前

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

使用Amazon 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指定值。有关在 Amazon CLI 中使用 Amazon EMR 命令的更多信息,请参阅 Amazon CLI命令参考

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

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