为什么即使 YARN 上的应用程序已完成,Amazon EMR 步骤仍在运行?

1 分钟阅读
0

即使相应的 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-idstep-id 替换为适合您使用案例的正确值。

aws emr describe-step --cluster-id j-xxxxxxxxxxxxx --step-ids s-xxxxxxxx

2.    使用 cancel-steps 命令取消该步骤。在以下命令中,将 cluster-idstep-id 替换为适合您使用案例的正确值。

aws emr cancel-steps --cluster-id j-xxxxxxxxxxxxx \
--step-ids s-3M8DXXXXXXXXX \
--step-cancellation-option SEND_INTERRUPT

有关更多信息,请参阅取消步骤


AWS 官方
AWS 官方已更新 1 年前