您如何从CLI终止Spark作业?

时间:2019-10-01 14:18:22

标签: apache-spark

Killing Spark job using command Prompt

这是我希望可以回答我的问题的线程。但是所有四个答案都说明了如何终止整个应用程序。

如何停止工作?例如计数吗?

我可以在Spark Web UI中通过单击相应作业上的“ kill”来执行此操作。我想必须可以列出正在运行的作业并直接通过CLI与之交互。

实际上,我正在使用在Glue端点上具有PySpark的笔记本电脑工作。如果我终止了该应用程序,则整个端点都将消失,并且必须启动一个新集群。我只是想停止工作。在Notebook中取消它只会断开同步,并且作业将继续运行,从而阻止了其他任何命令的执行。

5 个答案:

答案 0 :(得分:1)

Spark History Server提供了REST API interface。不幸的是,它仅公开了对应用程序,作业,阶段等的监视功能。

还有一个REST Submission interface,该功能提供了提交,取消和检查应用程序状态的功能。它没有记录在案的AFAIK,仅在Spark独立群集和Mesos群集上受支持,没有YARN。 (我想这就是为什么Jobs UI屏幕上的YARN上Spark不存在“ kill”链接的原因。)

因此,您可以尝试使用该“隐藏” API,但是如果您知道应用程序的Spark UI URL和要杀死的工作的工作ID,则更简单的方法是:

$ curl -G http://<Spark-Application-UI-host:port>/jobs/job/kill/?id=<job_id>

由于我不与Glue合作,所以我很想了解一下它的反应方式,因为杀死通常会导致org.apache.spark.SparkException: Job <job_id> cancelled

答案 1 :(得分:0)

列出Linux中的作业并将其杀死。

我会的   ps -ef | grep spark-submit 如果开始使用spark-submit。从输出中获取PID,然后  杀死-9

答案 2 :(得分:0)

mazaneicha的答案为基础,对于以Spark 2.4.6模式提交的作业,对于standalone模式下的client,卷曲请求以已知的applicationID是

curl -d "id=<your_appID>&terminate=true" -X POST <your_spark_master_url>/app/kill/

我们遇到了类似的问题,人们没有将笔记本电脑从群集中断开,从而浪费了资源。

我们通过解析webUI获得正在运行的应用程序的列表。我敢肯定,管理Spark集群的方式会比较简单。

答案 3 :(得分:-1)

通过以下方式杀死正在运行的工作:

  1. 打开Spark应用程序用户界面。
  2. 转到jobs标签。
  3. job中找到running jobs
  4. 点击kill链接并确认。

答案 4 :(得分:-1)

在终端中,如果您的资源管理器是yarn,您还可以使用yarn命令取消该工作。 列出正在运行的应用程序的第一个命令:

:纱线应用-list

这将列出正在运行的spark应用程序以及其他应用程序。 确定您的应用程序后,获取它的应用程序ID,然后通过粘贴ID复制以下内容:

:纱线应用程序-kill applicationid