

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

# 将 Amazon EMR 集群配置为步骤执行后继续或终止
<a name="emr-plan-longrunning-transient"></a>

本主题解阐释了使用长时间运行的集群与创建在最后一步运行后关闭的临时集群之间的区别。它还介绍了如何为集群配置步骤执行。

## 创建长时间运行的集群
<a name="emr-long-running-clusters"></a>

默认情况下，您使用控制台或控制台创建的集群 AWS CLI 处于长时间运行状态。长时间运行的集群将继续运行、接受工作并累积费用，直到您采取措施关闭它们。

长时间运行的集群在以下情况十分有效：
+ 当你需要交互式或自动查询数据时。
+ 当您需要与集群上托管的大数据应用程序持续交互时。
+ 当您定期处理大型数据集或需要频繁处理时，每次都无法有效启动新集群和加载数据。

您还可以在长时间运行的集群上设置终止保护，以避免意外或错误关闭 EC2 实例。有关更多信息，请参阅 [使用终止保护功能防止 Amazon EMR 集群意外关闭](UsingEMR_TerminationProtection.md)。

**注意**  
Amazon EMR 会为具有多个主节点的所有集群自动启用终止保护，并覆盖您在创建集群时应用的所有步骤执行设置。您可以在集群启动后禁用终止保护。请参阅[为正在运行的集群配置终止保护](UsingEMR_TerminationProtection.md#emr-termination-protection-running-cluster)。要关闭具有多个主节点的集群，您必须先修改集群属性，才能禁用终止保护。有关说明，请参阅[终止具有多个主节点的 Amazon EMR 集群](emr-plan-ha-launch.md#emr-plan-ha-launch-terminate)。

## 将集群配置为在步骤执行后终止
<a name="emr-step-execution"></a>

在步骤执行后配置终止时，集群将启动、运行引导启动操作，然后运行您指定的步骤。最后一步完成后，Amazon EMR 将终止集群的 Amazon EC2 实例。默认情况下，使用 Amazon EMR API 启动的集群会启动步骤执行。

步骤执行后终止，对于定期执行处理任务（例如日常数据处理运行）的集群来说，极其有效。步骤执行还可帮助您确保您只需按处理数据所需的时间付费。有关步骤的更多信息，请参阅 [将工作提交到 Amazon EMR 集群](emr-work-with-steps.md)。

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

**使用控制台开启步骤执行后终止**

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

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

1. 在 **Steps**（步骤）下，选择 **Add step**（添加步骤）。在 **Add Step**（添加步骤）对话框中，输入相应的字段值。选项因步骤类型而异。要添加步骤并退出对话框，请选择 **Add step**（添加步骤）。

1. 在 **Cluster termination**（集群终止）下，选中 **Terminate cluster after last step completes**（最后一步完成后终止集群）复选框。

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

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

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

**要在步骤执行后使用开启终止功能 AWS CLI**
+ 使用 `--auto-terminate` 命令时指定 `create-cluster` 参数以创建暂时性集群。

  以下示例说明了如何使用 `--auto-terminate` 参数。您可以键入以下命令并*myKey*替换为您的 EC2 key pair 的名称。
**注意**  
为了便于读取，包含 Linux 行继续符（\$1）。它们可以通过 Linux 命令删除或使用。对于 Windows，请将它们删除或替换为脱字号（^）。

  ```
  aws emr create-cluster --name "Test cluster" --release-label emr-7.12.0 \
  --applications Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey \
  --steps Type=PIG,Name="Pig Program",ActionOnFailure=CONTINUE,\
  Args=[-f,s3://amzn-s3-demo-bucket/scripts/pigscript.pig,-p,\
  INPUT=s3://amzn-s3-demo-bucket/inputdata/,-p,OUTPUT=s3://amzn-s3-demo-bucket/outputdata/,\
  $INPUT=s3://amzn-s3-demo-bucket/inputdata/,$OUTPUT=s3://amzn-s3-demo-bucket/outputdata/]
  --instance-type m5.xlarge --instance-count 3 --auto-terminate
  ```

------
#### [ API ]

**使用 Amazon EMR API 在集群启动中关闭步骤执行后终止**

1. 使用[RunJobFlow](https://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_RunJobFlow.html)操作创建集群时，将[KeepJobFlowAliveWhenNoSteps](https://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_JobFlowInstancesConfig.html#EMR-Type-JobFlowInstancesConfig-KeepJobFlowAliveWhenNoSteps)属性设置为`false`。

1. 使用 Amazon EMR API 在集群启动后更改步骤执行后终止配置：

   使用 SetKeepJobFlowAliveWhenNoSteps 动作。

------