前言
最近在进行Spark任务调度的源码学习,最开始对CoarseGrainedExecutorBackend的启动流程不是很清楚,所以带着这个疑问继续深入学习,终于弄清楚了
CoarseGrainedExecutorBackend是如何启动的,并且对Spark任务调度源码的了解更深入了一点。本篇主要是带着这个疑问以standalone模式总结一下
CoarseGrainedExecutorBackend启动的主要的流程,并不对每一部分的源码进行深入详细的总结。
SparkContext 初始化
首先从SparkContext的初始化开始,一般我们写Spark代码也是首先创建SparkContext。其中会执行:1
2
3
4
5// Create and start the scheduler 这个master是在sparkSubmit.Main方法得到
// 返回(StandaloneSchedulerBackend,TaskSchedulerImpl)
val (sched, ts) = SparkContext.createTaskScheduler(this, master, deployMode)
_schedulerBackend = sched
_taskScheduler = ts