spark源码(五)Master recive方法总结
一.Master recive方法总结
1.1 公共方法介绍及发送的消息介绍
schedule():方法很重要,基本上所有的方法都会调用这个
launchDriver()
launchExecutor()
all: worker.send(LaunchDriver) worker.send(LaunchExecutor) driver.send(ExecutorAdded)
registerApplication:
添加app相关资源,但是没有executor 和driver操作
registerWorker:
添加worker相关资源
removeWorker()
all:
driver.send(ExecutorUpdated) driver.send(WorkerRemoved)
worker.send(LaunchDriver) worker.send(LaunchExecutor) driver.send(ExecutorAdded)
removeWorker():
driver.send(ExecutorUpdated)
driver.send(WorkerRemoved)
removeExecutor()
removeDriver()
schedule()
all:
driver.send(ExecutorUpdated) driver.send(WorkerRemoved)
worker.send(LaunchDriver) worker.send(LaunchExecutor) driver.send(ExecutorAdded)
removeExecutor():
移除对应executord对应资源
removeDriver():
移除对应driver对应资源
schedule()
all:
worker.send(LaunchDriver) worker.send(LaunchExecutor) driver.send(ExecutorAdded)
removeApplication()
app的相关操作
killExecutor()
driver.send(ApplicationRemoved)
schedule
worker.send(ApplicationFinished)
all:
driver.send(ApplicationRemoved) worker.send(ApplicationFinished)
worker.send(LaunchDriver) worker.send(LaunchExecutor) driver.send(ExecutorAdded)
launchDriver():
添加对应driver资源
worker.send(LaunchDriver)
launchExecutor()
worker.send(LaunchExecutor)
driver.send(ExecutorAdded)
relaunchDriver():
removeDriver()
schedule()
all:
worker.send(LaunchDriver) worker.send(LaunchExecutor) driver.send(ExecutorAdded)
1.2 revice方法总结
每一个方法都有自己的一个对应的消息,但是最后都是会调用schedule方法
完成LaunchDriver LaunchExecutor ExecutorAdded
ElectedLeader: 内部调用 CompleteRecovery
registerApplication()
registerWorker()
all:
driver.send(ExecutorUpdated) driver.send(WorkerRemoved)
worker.send(LaunchDriver) worker.send(LaunchExecutor) driver.send(ExecutorAdded)
CompleteRecovery:
relaunchDriver()
removeDriver()
schedule()
all:
worker.send(LaunchDriver) worker.send(LaunchExecutor) driver.send(ExecutorAdded)
WorkerDecommissioning:
worker.send(MasterInStandby)
DecommissionWorkers:
worker.send(DecommissionWorker)
RegisterWorker:
worker.send(MasterInStandby)
worker.send(RegisteredWorker)
registerWorker()
worker.send(RegisteredWorker)
worker.send(RegisterWorkerFailed)
all:
driver.send(ExecutorUpdated) driver.send(WorkerRemoved)
worker.send(LaunchDriver) worker.send(LaunchExecutor) driver.send(ExecutorAdded)
worker.send(MasterInStandby) worker.send(RegisteredWorker) worker.send(RegisterWorkerFailed)
RegisterApplication:
registerApplication()
driver.send(RegisteredApplication)
all:
driver.send(ExecutorUpdated) driver.send(WorkerRemoved)
worker.send(LaunchDriver) worker.send(LaunchExecutor) driver.send(ExecutorAdded)
driver.send(RegisteredApplication)
ExecutorStateChanged:
driver.send(ExecutorUpdated)
removeExecutor()
removeApplication()
schedule()
all:
driver.send(ApplicationRemoved) worker.send(ApplicationFinished)
worker.send(LaunchDriver) worker.send(LaunchExecutor) driver.send(ExecutorAdded)
DriverStateChanged:
removeDriver()
all:
worker.send(LaunchDriver) worker.send(LaunchExecutor) driver.send(ExecutorAdded)
Heartbeat:
worker.send(ReconnectWorker)
MasterChangeAcknowledged:
completeRecovery()
all:
worker.send(LaunchDriver) worker.send(LaunchExecutor) driver.send(ExecutorAdded)
WorkerSchedulerStateResponse:
app driver executor操作
completeRecovery()
all:
worker.send(LaunchDriver) worker.send(LaunchExecutor) driver.send(ExecutorAdded)
WorkerLatestState:
worker.send(KillExecutor)
worker.send(KillDriver)
UnregisterApplication:
removeApplication()
all:
driver.send(ApplicationRemoved) worker.send(ApplicationFinished)
worker.send(LaunchDriver) worker.send(LaunchExecutor) driver.send(ExecutorAdded)
CheckForWorkerTimeOut:
removeWorker()
all:
driver.send(ExecutorUpdated) driver.send(WorkerRemoved)
worker.send(LaunchDriver) worker.send(LaunchExecutor) driver.send(ExecutorAdded)
搬砖多年终不得要领,遂载源码看之望得真经。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?