如何取消 Amazon EMR 步骤?

上次更新日期:2020 年 10 月 12 日

我正在尝试取消 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 和控制台执行步骤

解决方法

使用以下方法之一在 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


这篇文章对您有帮助吗?


您是否需要账单或技术支持?