

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

# 将工作提交到 Amazon EMR 集群时取消步骤
<a name="emr-cancel-steps"></a>

向集群提交工作时，您可以从 Amazon Web Services 管理控制台 Amazon CLI、或 Amazon EMR 中取消待处理和正在运行的步骤。API。

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

**使用控制台取消步骤**

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

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

1. 在集群详细信息页面的 **Steps**（步骤）选项卡上，选中要取消的步骤旁边的复选框。选择 **Actions**（操作）下拉菜单，然后选择 **Cancel steps**（取消步骤）。

1. 在 **Cancel the step**（取消步骤）对话框中，选择取消步骤并等待退出，或者取消步骤并强制退出。然后，选择 **Confirm（确认）**。

1. **Steps**（步骤）表中的步骤状态更改为 `CANCELLED`。

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

**要使用取消订阅 Amazon CLI**
+ 使用 `aws emr cancel-steps` 命令指定集群和要取消的步骤。以下示例演示了用于取消两个步骤的 Amazon CLI 命令。

  ```
  aws emr cancel-steps --cluster-id {{j-2QUAXXXXXXXXX}} \
  --step-ids {{s-3M8DXXXXXXXXX s-3M8DXXXXXXXXX}} \
  --step-cancellation-option SEND_INTERRUPT
  ```

使用 Amazon EMR 版本 5.28.0，可以在取消步骤时选择以下两个取消选项之一作为 `StepCancellationOption` 参数。
+ `SEND_INTERRUPT`：这是默认选项。当收到步骤取消请求时，EMR 会向步骤发送 `SIGTERM` 信号。将 `SIGTERM` 信号处理程序添加到您的步骤逻辑，以捕获此信号并终止子步骤进程，或等待它们完成处理。
+ `TERMINATE_PROCESS`：选择此选项后，EMR 会向步骤及其所有子进程发送 `SIGKILL` 信号，然后这些进程会立即终止。

------

**取消步骤的注意事项**
+ 取消正在运行的步骤或待处理步骤将从活动步骤计数中删除该步骤。
+ 假设没有更改 `stepConcurrencyLevel`，取消正在运行的步骤并不允许待处理步骤开始运行。
+ 取消正在运行的步骤不会触发步骤 `ActionOnFailure`。
+ 对于 EMR 5.32.0 及更高版本，`SEND_INTERRUPT StepCancellationOption` 会向步骤子进程发送 `SIGTERM` 信号。您应该注意此信号并正常进行清除和关闭。`TERMINATE_PROCESS StepCancellationOption` 向步骤子进程及其所有后代进程发送 `SIGKILL` 信号；但是，异步进程不受影响。