我有一个正在运行的 Spark 应用程序,它占据了我的其他应用程序不会被分配任何资源的所有内核。
我做了一些快速研究,人们建议使用 YARN kill 或 /bin/spark-class 来终止命令。但是,我使用的是 CDH 版本,而 /bin/spark-class 甚至根本不存在,YARN kill 应用程序也不起作用。
有人可以和我一起吗?
我有一个正在运行的 Spark 应用程序,它占据了我的其他应用程序不会被分配任何资源的所有内核。
我做了一些快速研究,人们建议使用 YARN kill 或 /bin/spark-class 来终止命令。但是,我使用的是 CDH 版本,而 /bin/spark-class 甚至根本不存在,YARN kill 应用程序也不起作用。
有人可以和我一起吗?
yarn application -kill application_1428487296152_25597
从 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
首次使用:
yarn application -list
记下应用程序 ID 然后终止使用:
yarn application -kill application_id
PUT http://{rm http 地址:port}/ws/v1/cluster/apps/{appid}/state
{
"state":"KILLED"
}
这可能不是一个合乎道德和首选的解决方案,但它有助于在您无法访问控制台以使用 yarn 应用程序命令终止作业的环境中。
步骤是
转到 spark 作业的应用程序母版页。点击工作部分。单击活动作业的活动阶段。您将在活动阶段旁边看到“杀死”按钮。
如果后续阶段依赖于当前运行的阶段,则此方法有效。虽然它将工作标记为“被用户杀死”