dOx*_*xxx 7 apache-spark apache-spark-standalone
我有一个Spark Standalone(不是YARN/Mesos)集群和一个运行(在客户端模式下)的驱动程序应用程序,它与该集群通信以执行其任务.但是,如果我关闭并重新启动Spark主服务器和工作程序,则驱动程序不会重新连接到主服务器并恢复其工作.
也许我对Spark Master和驱动程序之间的关系感到困惑.在这种情况下,主人是否负责重新连接到驱动程序?如果是这样,主服务器是否将其当前状态序列化到某个可以在重启时恢复的磁盘?
在这种情况下,Master 是否负责重新连接回 driver?如果是这样,主设备是否将其当前状态序列化到磁盘上的某个位置,以便在重新启动时可以恢复?
主节点和驱动程序之间的关系取决于几个因素。首先,驱动程序是托管SparkContext
/的驱动程序StreamingContext
,并且负责作业执行。它创建 DAG,并分别保存分配阶段/任务的DAGScheduler
和。TaskScheduler
如果您使用 Spark Standalone 并在“客户端模式”下运行作业,则主节点可以充当驱动程序的主机。这样,Master 还托管驱动程序进程,如果它死亡,驱动程序也会随之死亡。如果使用“集群模式”,驱动程序驻留在其中一个工作节点上,并频繁与主节点通信以获取当前正在运行的作业的状态、发回有关已完成批次的状态的元数据等。
在 Standalone 上运行时,如果 Master 挂掉并且您重新启动它,Master 不会重新执行之前运行的作业。为了实现这一点,您可以创建并向集群提供一个额外的主节点,并将其设置为 ZooKeeper 可以保存主节点状态,并在发生故障时在两者之间进行交换。当您以这种方式设置集群时,Master 会知道它之前执行的作业,并代表您恢复它们(新 Master 已带头)。
您可以在文档中阅读如何创建备用 Spark Master 节点。
归档时间: |
|
查看次数: |
1066 次 |
最近记录: |