

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用自动终止策略进行 Amazon EMR 集群清理
<a name="emr-auto-termination-policy"></a>

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

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


****  

| 当您使用以下应用程序时： | 当符合以下条件时，集群被视为处于空闲状态： | 
| --- | --- | 
| Amazon EMR 5.34.0 及更高版本、6.4.0 及更高版本 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/emr-auto-termination-policy.html)  | 
| Amazon EMR 版本 5.30.0 - 5.33.0 和 6.1.0 - 6.3.0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/emr/latest/ManagementGuide/emr-auto-termination-policy.html)  Amazon EMR 将集群标记为空闲，即使您有活跃的 Python3 内核，也可能会自动终止该集群。这是因为执行 Python3 内核不会在该集群上提交 Spark 作业。要将自动终止与 Python3 内核配合使用，我们建议您使用 Amazon EMR 版本 6.4.0 或更高版本。   | 

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

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

## 注意事项
<a name="emr-auto-termination-considerations"></a>

在使用自动终止策略之前，请注意以下功能和限制：
+ 在下文中 AWS 区域，亚马逊 EMR 6.14.0 及更高版本支持亚马逊 EMR 自动终止：
  + 亚太地区（台北）（ap-east-2）
  + 亚太地区（墨尔本）(ap-southeast-4)
  + 亚太地区（马来西亚）（ap-southeast-5）
  + 亚太地区（新西兰）（ap-southeast-6）
  + 亚太地区（泰国）（ap-southeast-7）
  + 加拿大西部（卡尔加里）（ca-west-1）
  + 欧洲（西班牙）(eu-south-2)
  + 墨西哥（中部）（mx-central-1）
+ 在下文中 AWS 区域，亚马逊 EMR 5.30.0 和 6.1.0 及更高版本支持亚马逊 EMR 自动终止：
  + 美国东部（弗吉尼亚州北部）（us-east-1）
  + 美国东部（俄亥俄州）(us-east-2)
  + 美国西部（俄勒冈州）(us-west-2)
  + 美国西部（北加利福尼亚）(us-west-1)
  + 非洲（开普敦）(af-south-1)
  + 亚太地区（香港）(ap-east-1)
  + 亚太地区（孟买）(ap-south-1)
  + 亚太地区（海得拉巴）(ap-south-2)
  + 亚太地区（首尔）(ap-northeast-2)
  + 亚太地区（大阪）(ap-northeast-3)
  + 亚太地区（新加坡）(ap-southeast-1)
  + 亚太地区（悉尼）(ap-southeast-2)
  + 亚太地区（雅加达）（ap-southeast-3）
  + 亚太地区（东京）(ap-northeast-1)
  + 加拿大（中部）(ca-central-1)
  + 南美洲（圣保罗）（sa-east-1）
  + 欧洲地区（法兰克福）(eu-central-1)
  + 欧洲（苏黎世）(eu-central-2)
  + 欧洲地区（爱尔兰）(eu-west-1)
  + 欧洲地区（伦敦）(eu-west-2)
  + 欧洲地区（米兰）(eu-south-1)
  + 欧洲（巴黎）（eu-west-3）
  + 欧洲地区（斯德哥尔摩）(eu-north-1)
  + 以色列（特拉维夫）（il-central-1）
  + 中东（阿联酋）(me-central-1)
  + 中国（北京）（cn-north-1）
  + 中国（宁夏）（cn-northwest-1）
  + AWS GovCloud (美国东部) (us-gov-east-1)
  + AWS GovCloud (美国西部) (us-gov-west-1)
+ 如果您没有指定金额，则空闲超时默认为 60 分钟（1 小时）。您可以指定最小空闲超时为 1 分钟，最长空闲超时时间为 7 天。
+ 在 Amazon EMR 6.4.0 及更高版本中，当您使用 Amazon EMR 控制台创建新集群时，默认情况下会启用自动终止。
+ 当您为集群启用自动终止功能时，Amazon EMR 会发布高分辨率 Amazon CloudWatch 指标。您可以使用这些指标来跟踪集群的活动和空闲状态。有关更多信息，请参阅 [集群容量指标](UsingEMR_ViewingMetrics.md#emr-metrics-managed-scaling)。
+ 当您使用非基于 Yarn 的应用程序（例如 Presto、Trino 或）时，不支持自动终止。 HBase
+ 要使用自动终止，指标收集器进程必须能够连接到公有 API 端点，以便在 API Gateway 中执行自动终止。如果您将私有 DNS 名称与一起使用 Amazon Virtual Private Cloud，则自动终止将无法正常运行。为确保自动终止正常运行，我们建议您执行以下操作之一：
  + 从您的 Amazon VPC 中删除 API Gateway 接口 VPC 终端节点。
  + 请按照[为什么从 VPC 连接我的 API Gateway 时会出现 HTTP 403 禁止错误？ APIs 中的说明进行](https://aws.amazon.com/premiumsupport/knowledge-center/api-gateway-vpc-connections/)操作 禁用私有 DNS 名称设置。
  + 在您的私有子网中启动集群。有关更多信息，请参阅 [私有子网](emr-clusters-in-a-vpc.md#emr-vpc-private-subnet) 中的主题。
+ 对于 EMR 5.30.0 及更高版本，如果您将主要安全组默认的 **Allow All**（允许所有）出站规则删除为 0.0.0.0/，则您必须添加一条规则，以允许出站 TCP 连接到安全组，从而在端口 9443 上进行服务访问。您的服务访问安全组应允许来自主要安全组端口 9443 上的入站 TCP 流量。有关配置安全组的更多信息，请参阅[适用于主实例（私有子网）的 Amazon EMR 托管安全组](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-man-sec-groups.html#emr-sg-elasticmapreduce-master-private)。

## 使用自动终止的权限
<a name="emr-auto-termination-permissions"></a>

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

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

## 附加、更新或删除自动终止策略
<a name="emr-auto-termination-attach"></a>

本部分包括从 Amazon EMR 集群附加、更新或删除自动终止策略的说明。在使用自动终止策略之前，请确保您有必要的 IAM 权限。请参阅[使用自动终止的权限](#emr-auto-termination-permissions)。

------
#### [ Console ]

**使用控制台创建集群时附加自动终止策略**

1. [登录 AWS 管理控制台，然后在 /emr 上打开亚马逊 EMR 控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/emr)

1. 在左侧导航窗格中的 **EMR on EC2** 下，选择 **Clusters**（集群），然后选择 **Create cluster**（创建集群）。

1. 在 **Cluster termination**（集群终止）下，选择 **Terminate cluster after idle time**（空闲时间后终止集群）。

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

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

1. 要启动集群，选择 **Create cluster**（创建集群）。

**使用控制台在正在运行的集群上附加、更新或删除自动终止策略**

1. [登录 AWS 管理控制台，然后在 /emr 上打开亚马逊 EMR 控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/emr)

1. 在左侧导航窗格中的 **EMR on EC2** 下，选择 **Clusters**（集群），然后选择要更新的集群。

1. 在集群详细信息页面的 **Properties**（属性）选项卡上，找到 **Cluster termination**（集群终止），然后选择 **Edit**（编辑）。

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

------
#### [ AWS CLI ]

**开始之前**

在您使用自动终止策略之前，我们建议您更新到 AWS CLI的最新版本。有关说明，请参阅[安装、更新和卸载 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)。

**要附加或更新自动终止政策，请使用 AWS CLI**
+ 您可以使用`aws emr put-auto-termination-policy`命令附加或更新集群上的自动终止策略。

  以下示例为指定了 3600 秒。*IdleTimeout*如果未指定*IdleTimeout*，则该值默认为一小时。

  ```
  aws emr put-auto-termination-policy \
  --cluster-id <your-cluster-id> \
  --auto-termination-policy IdleTimeout=3600
  ```
**注意**  
为了便于读取，包含 Linux 行继续符（\$1）。它们可以通过 Linux 命令删除或使用。对于 Windows，请将它们删除或替换为脱字符 (^)。

  当你使用`aws emr create-cluster`命令时，您还可以为`--auto-termination-policy`指定值。有关在中使用 Amazon EMR 命令的更多信息 AWS CLI，请参阅[AWS CLI 命令](https://docs.aws.amazon.com/cli/latest/reference/emr)参考。

**要删除自动终止政策，请使用 AWS CLI**
+ 使用`aws emr remove-auto-termination-policy`命令从集群中删除自动终止策略。有关在中使用 Amazon EMR 命令的更多信息 AWS CLI，请参阅[AWS CLI 命令](https://docs.aws.amazon.com/cli/latest/reference/emr)参考。

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

------