在《Spark提交任务SparkSubmit执行流程》简单地描述了SparkSubmit后执行流程,但对TaskScheduler的启动方法start()执行后并没有详细介绍,本文针对TaskScheduler的执行进行深入探讨,学习其启动后的执行流程。
- 在SparkContext实例化TaskScheduler后,执行TaskScheduler.start()方法启动TaskScheduler执行流程
- TaskScheduler.start()方法中实例了TaskSchedulerImpl,并调用SchedulerBackend.start()方法
- 由于SchedulerBackend是个接口,实际调用的是其实现类,本文以SparkDeploySchedulerBackend为例子深入分析
- 在SparkDeploySchedulerBackend方法start()中,先调用了父类的方法supper.start();在父类start方法中实例化了一个DriverActor,即Spark术语中的driver,其作用为建立与各Executor之间RPC通信
- SparkDeploySchedulerBackend方法start()在实例化DriverActor后,对AppClient进行实例化
- 调用AppClient.start()方法,在start()方法实例了一个ClientActor,其作用为建立与Master之间的RPC通信