Spark-源码学习-集群启动-standalone 设计
启动 Master
Standalone 部署模式中首先会启动一到多个
Master.main
函数的进程。每个Master.main
进程中都会创建 Master 实例并注册到 Master 自己的 RpcEnv 中引用本站文章Spark-源码学习-集群启动-standalone-Master 启动JokerMaster 选举
Standalone 模式下可以存在多个Master,这些 Master 之间通过持久化引擎 (PersistenceEngine) 和领导选举机制解决生成环境下 Master 的单点问题,使 Master 在异常退出后,能够重新选举激活状态的 Master,并从故障中恢复集群。
在启动 Master 实例的过程中创建 ZooKeeperLeaderElectionAgent 实例,每个 Master 实例对应的 ZooKeeperLeaderElectionAgent 实例都会参与 ZooKeeper 的领导选举,最终确定正式的领导者并调用 $ZooKeeperLeaderElectionAgent.isLeader()$ 方法。$isLeader()$ 方法将会调用 $Master.electedLeader()$ 方法将 Master 选举为领导,Master 的状态被设置为激活。对于没有被选举为领导的 Master,会调用 $ZooKeeperLeaderElectionAgent.notLeader()$ 方法。$notLeader()$ 方法会将领导者的信息告知支持者。
引用本站文章Spark-源码学习-集群启动-standalone-选举机制Joker启动 Worker
Standalone 部署模式中会启动一到多个
Worker.main
函数的进程。每个Worker.main
进程中都会创建 Worker 实例并注册到 Worker 自己的 RpcEnv 中~引用本站文章Spark-源码学习-集群启动-standalone-Worker 启动Joker注册 Worker
在启动 Worker 实例的过程中向 Master 实例发送
RegisterWorker
消息,注册 Worker~,Master 接收到 RegisterWorker 消息后对 WorkerInfo 进行注册。WorkerInfo 注册成功后,Master 向 Worker 回复 RegisteredWorker 消息。Worker 收到 RegisteredWorker 消息后,将向 Master 发送 WorkerLatestState 消息,将 Worker 最新状态汇报给 Master。Master 接收到 WorkerLatestState 消息后,对 Executor 和 Driver 进行匹配,对于不匹配的 Executor 和 Driver,通知 Worker 杀死引用本站文章Spark-源码学习-集群启动-standalone-Worker 注册机制JokerWorker 心跳
Worker 通过发送心跳实现的汇报运行状态,当 worker 向 Master 注册成功后会接收到 Master 回复的
RegisteredWorker
消息,Worker 使用 handleRegisterResponse 方法处理RegisteredWorker
消息时,将会向 forworaMessageScheduler 提交以HEARTBEAT_MILLIS
作为间隔向 Worker 自身发送SendHeartbeat
消息的定时任务。Worker 的 receive 方法实现了对SendHeartbeat
消息的处理如果 connected 为 true,则调用 sendToMaster 方法,向 Master 发送 Heartbeat 消息(此消息将携带Worker 的 ID 和 Worker 的 RpcEndpointRef)
引用本站文章Spark-源码学习-集群启动-standalone-Worker 心跳机制Joker