124

我有一个正在运行的 Spark 应用程序,它占据了我的其他应用程序不会被分配任何资源的所有内核。

我做了一些快速研究,人们建议使用 YARN kill 或 /bin/spark-class 来终止命令。但是,我使用的是 CDH 版本,而 /bin/spark-class 甚至根本不存在,YARN kill 应用程序也不起作用。

在此处输入图像描述

有人可以和我一起吗?

4

5 回答 5

255
  • 从 spark 调度程序复制粘贴应用程序 ID,例如application_1428487296152_25597
  • 连接到已启动作业的服务器
  • yarn application -kill application_1428487296152_25597
于 2015-05-15T06:55:10.857 回答
12

从 YARN 获取所有应用程序的 Id 并一个一个地杀死它们可能会很耗时。您可以使用 Bash for 循环来快速高效地完成这个重复性任务,如下所示:

杀死 YARN 上所有处于 ACCEPTED 状态的应用程序:

for x in $(yarn application -list -appStates ACCEPTED | awk 'NR > 2 { print $1 }'); do yarn application -kill $x; done

杀死 YARN 上所有处于 RUNNING 状态的应用程序:

for x in $(yarn application -list -appStates RUNNING | awk 'NR > 2 { print $1 }'); do yarn application -kill $x; done

于 2019-05-08T07:34:43.147 回答
8

首次使用:

yarn application -list

记下应用程序 ID 然后终止使用:

yarn application -kill application_id
于 2020-09-22T15:46:42.933 回答
3

https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html#Cluster_Application_State_API

PUT http://{rm http 地址:port}/ws/v1/cluster/apps/{appid}/state

{
  "state":"KILLED"
}
于 2017-10-11T02:42:13.337 回答
1

这可能不是一个合乎道德和首选的解决方案,但它有助于在您无法访问控制台以使用 yarn 应用程序命令终止作业的环境中。

步骤是

转到 spark 作业的应用程序母版页。点击工作部分。单击活动作业的活动阶段。您将在活动阶段旁边看到“杀死”按钮。

如果后续阶段依赖于当前运行的阶段,则此方法有效。虽然它将工作标记为“被用户杀死”

于 2020-02-19T05:20:08.250 回答