Spark-源码学习-SparkCore-调度机制-任务调度-Task 调度-SchedulerBackend
一、概述
SchedulerBackend 是 TaskScheduler 的调度后端接口。TaskScheduler 给 Task 分配资源实际是通过 SchedulerBackend 来完成的,SchedulerBackend 给 Task 分配完资源后将与分配给 Task 的 Executor 通信,并要求后者运行 Task。
https://weread.qq.com/web/reader/0c832fb05e12e40c8ca6190k32b321d024832bb90e89958
https://zhuanlan.zhihu.com/p/354775031
https://www.yisu.com/zixun/563198.html
1.1. LauncherBackend
当 Spark 应用程序没有在用户应用程序中运行,而是运行在单独的进程中时,用户可以在用户应用程序中使用 LauncherServer 与Spark 应用程序通信。LauncherServer 将提供 Socket 连接的服务端,与 Spark 应用程序中的 Socket 连接的客户端通信。
TaskSchedulerImpl 底层依赖 于LauncherBackend,LauncherBackend 依赖于BackendConnection,跟 LauncherServer 进行通信。
https://weread.qq.com/web/reader/0c832fb05e12e40c8ca6190ke2c32140247e2c420d92577
二、实现
2.1. CoarseGrainedSchedulerBackend
等待 CoarseGrainedExecutorBackend 进行连接的 SchedulerBackend 实现。由 CoarseGrainedSchedulerBackend 建立的CoarseGrainedExecutorBackend 进程将会一直存在,真正的 Executor 线程将在 CoarseGrainedExecutorBackend 进程中执行
2.2. LocalSchedulerBackend
local模式中的调度后端接口。在local模式下,Executor、LocalSchedulerBackend、Driver 都运行在同一个 JVM 进程中