如何终止正在运行的 Spark 应用程序?

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

我做了一些快速研究,人们建议使用 YARN kill 或/bin/park-class 来终止命令。但是,我使用 CDH 版本和/bin/火花类甚至根本不存在,YARN 杀死应用程序也不工作。

enter image description here

有人能帮我吗?

255255 次浏览
  • 从火花调度程序复制粘贴应用程序 Id,例如 Application _ 1428487296152 _ 25597
  • 连接到启动作业的服务器
  • yarn application -kill application_1428487296152_25597

Https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/resourcemanagerrest.html#cluster_application_state_api

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

{
"state":"KILLED"
}

从 YARN 获取所有的应用程序 ID 并逐个杀死它们可能是很费时间的。您可以使用 Bash for 循环来更快更有效地完成这个重复的任务,如下所示:

关闭 YARN 上所有处于接受状态的应用程序:

对于 $中的 x (纱线应用程序-列表-应用程序接受 | awk‘ NR > 2{ print $1}’) ; 执行纱线应用程序-杀死 $x; 完成

关闭 YARN 上所有处于运行状态的应用程序:

对于 $中的 x (纱线应用程序-列表-应用程序运行 | awk‘ NR > 2{ print $1}’) ; 执行纱线应用程序-杀死 $x; 完成

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

步骤是

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

如果后续的阶段依赖于当前运行的阶段,则此方法可以工作。虽然它标志着作业为“用户杀死”

首次使用:

yarn application -list

记下应用程序 ID 然后杀死使用:

yarn application -kill application_id