如何使Spark驱动程序对Master重新启动?
我有一个Spark Standalone(不是YARN / Mesos)集群和一个正在运行(在客户端模式下)的驱动程序应用程序,该应用程序正在与该集群通信以执行其任务。 但是,如果我关闭并重新启动Spark主机和工作人员,则驱动程序不会重新连接到主机并恢复其工作。
也许我对Spark Master和司机之间的关系感到困惑。 在这样的情况下,负责重新连接到驱动程序的主人? 如果是这样,Master是否会将其当前状态序列化到磁盘,以便在重新启动时可以恢复?
在这样的情况下,负责重新连接到驱动程序的主人? 如果是这样,Master是否会将其当前状态序列化到磁盘,以便在重新启动时可以恢复?
主节点和驱动程序之间的关系取决于几个因素。 首先,驱动程序是托管SparkContext
/ StreamingContext
的驱动程序,负责执行作业。 它是创建DAG的人,并拥有分别分配阶段/任务的DAGScheduler
和TaskScheduler
。 如果您使用Spark Standalone并在“客户端模式”下运行您的作业,主节点可作为驱动程序的主机。 这样,大师也承载驱动程序进程,如果它死了,驱动程序就像它一样死去。 如果使用“集群模式”,则驱动程序驻留在其中一个工作节点上,并经常与主站通信以获取当前正在运行的作业的状态,发送有关已完成批次状态的元数据等。
在独立模式下运行时,如果主服务器死机并重新启动,主服务器不会重新执行之前运行的作业。 为了达到这个目的,您可以创建并提供一个额外的主节点,并设置它,以便ZooKeeper可以保持主服务器状态,并在发生故障时在两者之间进行交换。 当您以这种方式设置群集时,主人知道它是先前执行的作业,并代表您的新主人带头回复它们。
您可以阅读如何在文档中创建备用Spark主节点。
链接地址: http://www.djcxy.com/p/36683.html