即使各 Apache Spark 或 YARN 應用程式已完成執行,Amazon EMR 步驟仍處於 RUNNING 狀態。
解決方案
請使用下列方法之一來解決這個問題:
- 驗證各 YARN 應用程式的狀態,然後結束該步驟。
- 使用 AWS Command Line Interface (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
如需詳細資訊,請參閱取消步驟。