Skip to content

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

1 分钟阅读
0

即使相应的 Apache Spark 或 YARN 应用程序已完成,Amazon EMR 步骤仍处于 RUNNING(正在运行)状态。

解决方法

使用以下方法之一来解决问题。

验证 YARN 应用程序的状态,然后结束该步骤

完成以下步骤:

  1. 识别步骤日志 stderr 文件中的 YARN applicationId

  2. 使用 SSH 连接到主节点

  3. 使用以下 YARN 命令查找 YARN 应用程序的状态。在以下示例命令中,将 application_id 替换为您的应用程序 ID。示例应用程序 ID 为 application_1234567891011_001

    yarn application -status application_id

    -或-

    使用以下 YARN 命令列出所有应用程序:

    yarn application -list -appStates ALL
  4. 检查前面命令的输出以了解应用程序的状态。
    如果前面命令的输出状态为 FINISHEDFAILEDKILLED,则 YARN 应用程序已完成。
    如果应用程序状态为 NEWNEW_SAVINGSUBMITTEDACCEPTEDRUNNING,则 YARN 应用程序仍在运行。等待应用程序完成或结束应用程序以取消该步骤。
    以下是成功完成的应用程序的输出示例:

    Progress : 100%
    State : FINISHED
    Final-State : SUCCEEDED
  5. 运行以下命令以结束应用程序。将 application_id 替换为您的应用程序 ID。示例应用程序 ID 为 application_1234567891011_001

    yarn application -kill application_id
  6. 结束应用程序后,再次检查 Amazon EMR 步骤的状态。

使用 AWS 命令行界面 (AWS CLI) 手动取消 Amazon EMR 步骤

**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 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

有关详细信息,请参阅向 Amazon EMR 集群提交工作时取消步骤

AWS 官方已更新 10 个月前