spark 内核源码剖析五:Master主备切换机制原理

Spark高可用HA, 是可以配置两个Master 的,一个Acitve Master,一个StandBy Master,当Active Master节点挂掉的时候,可以将StandBy Master切换为Active Master。
Spark Master 主备切换可以基于两种机制,一种是基于文件系统的,一种是基于Zookeeper(生产中用的多);基于文件系统的主备切换机制,需要在Active Master挂掉之后,手动切换到StandBy Master;而基于ZooKeeper的主备切换机制,可以实现自动切换Master。
下图是在Active Master挂掉之后,切换到StandBy Master时,Master会做哪些操作。


image.png

源码入口是org.apache.spark.deploy.master.Master#completeRecovery,
completeRecovery是用来完成Master的恢复

//将Application和Worker,过滤出来目前状态还是UNKNOMN的,然后遍历,分别调用removeWorker和finfshApplication方法,对可能已经出故障,或者甚至已经死掉的Applicationhe、worker进行清理;
//清理的机制有三点:1、从内存缓存结构中移除,2、从相关的组件的内存缓存中移除,3、从持久化存储中移除
 // Kill off any workers and apps that didn't respond to us.
    workers.filter(_.state == WorkerState.UNKNOWN).foreach(removeWorker)
    apps.filter(_.state == ApplicationState.UNKNOWN).foreach(finishApplication)

你可能感兴趣的:(spark 内核源码剖析五:Master主备切换机制原理)