Amazon EMR ステップに対応する Apache Spark または YARN アプリケーションが完了しても、ステップの状態が RUNNING のままになります。
解決策
次のいずれかの手順で、この問題を解決します。
YARN アプリケーションのステータスを検証し、ステップを終了する
次の手順を実行します。
-
ステップログの 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) を使用して 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 クラスターに作業を送信する際のステップをキャンセルする」を参照してください。