それぞれの Apache Spark または YARN アプリケーションが完了したにもかかわらず、Amazon EMR ステップが、実行中の状態のままです。
解決方法
この問題を解決するには、次のいずれかの方法を使用してください。
- それぞれの YARN アプリケーションのステータスを検証し、ステップを終了します。
- AWS コマンドラインインターフェイス (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
詳細については、「ステップのキャンセル」をご参照ください。