为什么即使 YARN 上的应用程序已完成,Amazon EMR 步骤仍在运行?
上次更新日期:2022 年 12 月 23 日
即使相应的 Apache Spark 或 YARN 应用程序已完成,Amazon EMR 步骤仍处于“正在运行”状态。
解决方法
使用以下方法之一来解决此问题:
- 验证相应的 YARN 应用程序的状态,然后结束该步骤。
- 使用 AWS 命令行界面(AWS CLI)手动取消步骤 ID。
验证 YARN 应用程序的状态,然后结束该步骤
1. 从步骤日志 stderr 文件中识别 YARN applicationId。有关更多信息,请参阅如何对 Amazon EMR 中失败的步骤进行故障排除?
2. 使用 SSH 连接到主节点。
3. 使用以下 YARN 命令查找 YARN 应用程序的状态。在以下示例命令中,将 application_id 替换为您的应用程序 ID。示例应用程序 ID 为 application_1234567891011_001。
yarn application -status application_id
或者,使用以下 YARN 命令列出所有应用程序:
yarn application -list -appStates ALL
4. 检查前面命令的输出以了解应用程序的状态。
Application-States: [NEW, NEW_SAVING, SUBMITTED, ACCEPTED, RUNNING, FINISHED, FAILED, KILLED]
以下是成功完成的应用程序的示例输出:
Progress : 100%
State : FINISHED
Final-State : SUCCEEDED
如果前面命令的输出状态为 FINISHED(已完成)、FAILED(已失败)或 KILLED(已终止),则表示 YARN 应用程序已完成。
如果应用程序状态为 NEW(已创建)、NEW_SAVING(已创建保存中)、SUBMITTED(已提交)、ACCEPTED(已接受)或 RUNNING(正在运行),则表示 YARN 应用程序仍在运行。等待应用程序完成或结束应用程序以取消该步骤。
7. 运行以下命令以结束该应用程序。在以下示例命令中,将 application_id 替换为您的应用程序 ID。示例应用程序 ID 为 application_1234567891011_001。
yarn application -kill application_id
8. 结束应用程序后,重新检查 Amazon EMR 步骤的状态。
使用 AWS CLI 手动取消 Amazon EMR 步骤
注意:如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI。
1. 使用 describe-step 命令查看该步骤的状态。在以下命令中,将 cluster-id 和 step-id 替换为适合您使用案例的正确值。
aws emr describe-step --cluster-id j-xxxxxxxxxxxxx --step-ids s-xxxxxxxx
2. 使用 cancel-steps 命令取消该步骤。在以下命令中,将 cluster-id 和 step-id 替换为适合您使用案例的正确值。
aws emr cancel-steps --cluster-id j-xxxxxxxxxxxxx \
--step-ids s-3M8DXXXXXXXXX \
--step-cancellation-option SEND_INTERRUPT
有关更多信息,请参阅取消步骤。