如何使Spark驱动程序对Master重新启动?

我有一个Spark Standalone(不是YARN / Mesos)集群和一个正在运行(在客户端模式下)的驱动程序应用程序,该应用程序正在与该集群通信以执行其任务。 但是,如果我关闭并重新启动Spark主机和工作人员,则驱动程序不会重新连接到主机并恢复其工作。

也许我对Spark Master和司机之间的关系感到困惑。 在这样的情况下,负责重新连接到驱动程序的主人? 如果是这样,Master是否会将其当前状态序列化到磁盘,以便在重新启动时可以恢复?


在这样的情况下,负责重新连接到驱动程序的主人? 如果是这样,Master是否会将其当前状态序列化到磁盘,以便在重新启动时可以恢复?

主节点和驱动程序之间的关系取决于几个因素。 首先,驱动程序是托管SparkContext / StreamingContext的驱动程序,负责执行作业。 它是创建DAG的人,并拥有分别分配阶段/任务的DAGSchedulerTaskScheduler 。 如果您使用Spark Standalone并在“客户端模式”下运行您的作业,主节点可作为驱动程序的主机。 这样,大师也承载驱动程序进程,如果它死了,驱动程序就像它一样死去。 如果使用“集群模式”,则驱动程序驻留在其中一个工作节点上,并经常与主站通信以获取当前正在运行的作业的状态,发送有关已完成批次状态的元数据等。

在独立模式下运行时,如果主服务器死机并重新启动,主服务器不会重新执行之前运行的作业。 为了达到这个目的,您可以创建并提供一个额外的主节点,并设置它,以便ZooKeeper可以保持主服务器状态,并在发生故障时在两者之间进行交换。 当您以这种方式设置群集时,主人知道它是先前执行的作业,并代表您的新主人带头回复它们。

您可以阅读如何在文档中创建备用Spark主节点。

链接地址: http://www.djcxy.com/p/36683.html

上一篇: How to make Spark driver resilient to Master restarts?

下一篇: Angular 2 cli run tests on bitbucket pipelines