流程

Leader选举模式包含ZOOKEEPER、基于文件系统的、默认空实现以及自定义实现的,选举模式和长久化引擎是对应的。

长久化引擎Leader选举模式
基于文件系统MonarchyLeaderAgent
基于ZooKeeperZooKeeperLeaderElectionAgent
空实现MonarchyLeaderAgent

MonarchyLeaderAgent是服务启动的时候,就间接成为Leader节点,而ZooKeeperLeaderElectionAgent是基于ZooKeeper的Leader来选举的。

拉取数据

当成为Leader节点的时候,Master就会去长久化引擎里拉取ApplicationInfo、DriverInfo、WorkerInfo等信息(拉取的过程在长久化引擎里说过了),如果这些数据都是空的,就间接变成ALIVE状态,对外提供服务。

如果不是空的,那就须要把数据进行还原,这样原ALIVE节点的数据就不会失落。

复原Application

Master拿到ApplicationInfo数据后,就开始对Application进行注册,把Application的状态改为UNKNOWN,而后发消息给对应的Application,告知他Master地址曾经变更,此音讯将携带被选举为领导的Master和此Master的masterWebUiUrl属性。

Application接管到新的Master的告诉,就断开了和旧的Master的连贯,并指向新的master,而后发信息给Master说我曾经晓得了。
Master收到音讯后,把Application的状态改为WAITING。

复原Driver

遍历从长久化引擎中读取的DriverInfo,将每个DriverInfo增加到drivers缓存。

复原Worker

Master拿到WorkerInfo数据后,就开始对Worker进行注册,把WorkerInfo的状态改为UNKNOWN,而后发消息给对应的Application,告知他Master地址曾经变更,此音讯将携带被选举为领导的Master和此Master的masterWebUiUrl属性。

Worker接管到新的Master的告诉,把Master的相干信息进行了变更,而后发消息给Master,这个音讯携带了Worker的ID、这个Worker里的Executor的信息列表。

Master收到音讯后,对Worker和Executor的信息进行了复原,并把WorkerInfo的状态改为ALIVE。

调度

Application和Worker复原的时候,都会先把状态改为UNKNOWN。

等Application响应的时候,再把状态改为WAITING或者ALIVE。

此时如果状态为UNKNOWN的WorkerInfo或ApplicationInfo阐明还没发消息给Master,Master不确定他们是否存活,所以在调度之前就须要移除他们。
对Application、Driver、Worker等信息进行复原后,就开启了资源调度。资源调度之前曾经讲过,这里就不再累述。