Amazon EMR のステップをキャンセルしようとしています。cancel-steps コマンドを実行すると、次のようなエラーが出ます。「Cannot cancel the step.It is already RUNNING.」
簡単な説明
このエラーは、Amazon EMR バージョン 5.27.x 以前に影響します。これらのリリースバージョンでは、cancel-steps コマンドは保留中のステップのみをキャンセルします。実行中のステップをキャンセするには、アプリケーション ID (YARN ステップの場合) またはプロセス ID (YARN 以外のステップの場合) のいずれかを強制終了します。
Amazon EMR バージョン 5.28.0 以降では、cancel-steps を使用して、保留中のステップと実行中のステップの両方をキャンセルできます。詳細については、AWS CLI およびコンソールを使用してステップを操作するを参照してください。
注: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
解決方法
Amazon EMR バージョン 5.27.x 以前でのステップの実行をキャンセルするには、次のいずれかの方法を使用します。
YARN アプリケーションのキャンセル
1. SSH を使用してマスターノードに接続します。
2. ステップのアプリケーション ID を検索するには、次のコマンドを実行して、実行中のすべてのアプリケーションを一覧表示します。
yarn application -list
3. 次のコマンドを実行して、アプリケーションを強制終了します。application_id を「application_1505786029486_002」などのアプリケーション ID に置き換えます。
注: このコマンドは、キュー内の保留中のステップをすべて強制終了します。
yarn application -kill application_id
YARN 以外のアプリケーションのキャンセル
1. SSH を使用してマスターノードに接続します。
2. 次のコマンドを実行して、プロセス ID (pid) を取得します。次の例では、step_id を s-Y9XXXXXXAPMD などのステップ識別子に置き換えます。
ps -ef |grep -i step_id
次の出力例では、プロセス ID は 2366 です。
hadoop 2366 4664 0 16:20 ? 00:00:01 /etc/alternatives/jre/bin/java -Xmx1000m -server -XX:OnOutOfMemoryError=kill -9 %p -Dhadoop.log.dir=/mnt/var/log/hado
op/steps/s-2RNURIK9Z2JUH -Dhadoop.log.file=syslog -Dhadoop.home.dir=/usr/lib/hadoop -Dhadoop.id.str=hadoop -Dhadoop.root.logger=INFO,DRFA -Djava.library.pat
h=:/usr/lib/hadoop-lzo/lib/native:/usr/lib/hadoop/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Djava.io.tmpdir=/mnt/var/lib/hadoop/st
eps/s-2RNURIK9Z2JUH/tmp -Dhadoop.security.logger=INFO,NullAppender -Dsun.net.inetaddr.ttl=30 org.apache.hadoop.util.RunJar /var/lib/aws/emr/step-runner/hadoop-
jars/command-runner.jar bash -c envsubst < /home/hadoop/truffle_suffle.json.template
3. 次のコマンドを実行して、プロセスを強制終了します。2366 をステップのプロセス識別子に置き換えます。
注: このコマンドは、キュー内の保留中のステップをすべて強制終了します。
kill -9 2366
ステップのステータスが Running から Failed に変わります。
関連情報
ステップのキャンセル