我正在尝试取消 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 替换为您的应用程序 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
此步骤的状态将从 Running 更改为 Failed。
相关信息
取消步骤