Spark Master主备切换能够基于两种机制,一种是基于文件系统的,一种是基于Zookeeper的,基于文件系统
的主备切换机制,须要在Active Master挂掉以后,由咱们手动
去切换到Standby Master上;而基于Zookeeper
的主备切换机制,能够实现自动
切换Master。算法
因此咱们接下来重点说说在主Master挂掉后,Standby Master都会作哪些操做。
缓存
Standby Master切换流程图数据结构
持久化引擎(FileSystemPersistenceEngine或者ZookeeperPersistenceEngine)去读取持久化的storedApps、storeDrivers、storedWorkers
。 任何一个是非空
的话,就将持久化的Applications、Drivers、Workers信息从新进行注册
,注册到Standby Master内存缓存结构中。 将Applications、Workers的状态都修改成UNKNOWN
。而后向Application所对应的Driver以及Worker发送Standby Master的地址。 更新Master地址,并返回响应给新的Master
。 competeRecovery
方法对没有发送响应消息的Driver和Worker进行处理,过滤掉他们的信息。competeRecovery方法app
removeWorker方法源码分析
Master注册机制流程图spa
Driver启动后,执行咱们编写的Application代码,执行SparkContext初始化,底层的SparkDeployScheduleBackend会经过AppClient内部的线程ClientActor发送RegisterApplication到Master,进行Application的注册。线程
Spark中各个内存缓存的数据结构:code
Worker节点在启动后,就会主动向Master进行注册对象
spark-submit提交spark Application时,首先就会注册Driver。队列
到这里关于Spark Master的核心源码已经剖析了一小半了,有了这一讲的基础,咱们下一讲就能够剖析Master最最重要的资源调度算法了!