即使相应的 Apache Spark 或 YARN 应用程序已完成,Amazon EMR 步骤仍处于 RUNNING(正在运行)状态。
使用以下方法之一来解决问题。
完成以下步骤:
识别步骤日志 stderr 文件中的 YARN applicationId。
使用 SSH 连接到主节点。
使用以下 YARN 命令查找 YARN 应用程序的状态。在以下示例命令中,将 application_id 替换为您的应用程序 ID。示例应用程序 ID 为 application_1234567891011_001。
yarn application -status application_id
-或-
使用以下 YARN 命令列出所有应用程序:
yarn application -list -appStates ALL
检查前面命令的输出以了解应用程序的状态。 如果前面命令的输出状态为 FINISHED、FAILED 或 KILLED,则 YARN 应用程序已完成。 如果应用程序状态为 NEW、NEW_SAVING、SUBMITTED、ACCEPTED 或 RUNNING,则 YARN 应用程序仍在运行。等待应用程序完成或结束应用程序以取消该步骤。 以下是成功完成的应用程序的输出示例:
Progress : 100% State : FINISHED Final-State : SUCCEEDED
运行以下命令以结束应用程序。将 application_id 替换为您的应用程序 ID。示例应用程序 ID 为 application_1234567891011_001。
yarn application -kill application_id
结束应用程序后,再次检查 Amazon EMR 步骤的状态。
**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,应确保您使用的是最新版本的 AWS CLI。
使用 describe-step 命令查看步骤的状态。在以下命令中,将 cluster-id 和 step-id 替换为适合您的用例的正确值。
aws emr describe-step --cluster-id j-xxxxxxxxxxxxx --step-ids s-xxxxxxxx
使用 cancel-steps 命令取消步骤。在以下命令中,将 cluster-id 和 step-id 替换为适合您的用例的正确值。
aws emr cancel-steps --cluster-id j-xxxxxxxxxxxxx \ --step-ids s-3M8DXXXXXXXXX \ --step-cancellation-option SEND_INTERRUPT
有关详细信息,请参阅向 Amazon EMR 集群提交工作时取消步骤。