為什麼即使我的應用程式在 YARN 上執行完成後,Amazon EMR 步驟也仍在執行?

1 分的閱讀內容
0

即使各 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

如果上述命令的輸出結果中有 FINISHEDFAILEDKILLED 等狀態,表示 YARN 應用程式已完成執行。

如果應用程式狀態為 NEWNEW_SAVINGSUBMITTEDACCEPTEDRUNNING,表示 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 年前