我正在嘗試取消 Amazon EMR 步驟。當我執行 cancel-steps 命令時,出現以下錯誤: 「無法取消步驟。它正在執行。」
簡短描述
此錯誤會影響 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 換成您的應用程式 ID,例如「application_1505786029486_002」。
**注意:**此命令會終止佇列中所有待處理的步驟。
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
步驟的狀態會從執行中變更為失敗。
相關資訊
取消步驟