即使已完成相對應的 Apache Spark 或 YARN 應用程式,Amazon EMR 步驟仍處於執行狀態。
請使用下列其中一種方法來解決此問題。
請完成下列步驟:
從步驟記錄 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 Command Line Interface (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 叢集時取消步驟。