首页 > 解决方案 > 如果我让火花驱动器崩溃会发生什么。执行人会说清楚吗?

问题描述

假设我有一个在客户端模式下运行的 spark 驱动程序。如果我命令'kill -9 xxx'并且xxx是驱动程序的进程号,会发生什么?是否会收集分配给驱动程序的执行者和工作人员。如果做了,怎么做?

标签: apache-spark

解决方案


spark-submit 脚本提供了将已编译的 Spark 应用程序提交到集群的最直接的方法。对于独立集群,Spark 目前支持两种部署模式。在客户端模式下,驱动程序与提交应用程序的客户端在同一进程中启动。然而,在集群模式下,驱动程序是从集群内的一个 Worker 进程启动的,并且客户端进程在完成提交应用程序的职责后立即退出,而无需等待应用程序完成。

如果您的应用程序是通过 Spark 提交启动的,那么应用程序 jar 会自动分发到所有工作节点。如果你想杀死一个应用程序,你可以通过:

./bin/spark-class org.apache.spark.deploy.Client kill <master url> <driver ID>

您可以通过 http://:8080 上的独立 Master Web UI 找到驱动程序 ID。

Spark批处理应用状态和驱动程序状态是协调的,通过每个Spark批处理应用进程与Spark master一起通信。如果您在驱动程序处于 RUNNING 状态时直接发出 OS 级别的 kill 命令,应用程序和驱动程序进程将立即终止,而无需与 Spark master 通信。然后应用程序状态为 FINISHED,驱动程序状态为 FAILED。

杀死驱动程序将导致 YARN 在yarn-cluster模式下重新启动它。您想终止 spark-submit 进程。


推荐阅读