Task提交流程
在划分Stage之后,在对Task进行封装成为TaskSet然后提交给TaskScheduler。
提交流程源码解析
提交TaskSet
查看TaskSchedulerImpl的160行,可以看到submitTasks()方法,主要代码如下:
这里主要的的方法是CoarseGrainedSchedulerBackend类的reviveOffers()。
CoarseGrainedSchedulerBackend的reviveOffers()
CoarseGrainedSchedulerBackend中DriverActor的receiveWithLogging()
DriverActor类中的receiveWithLogging()进行模式匹配
makeOffers()方法向Executor提交Task
Executor运行Task
makeOffers()方法的主要代码如下:
这里调用launchTasks(),代码主要的流程是:
这里做的工作主要是迭代TaskSet然后一个一个的取出Task进行序列化之后向Executor发送序列化好的Task。
Executor执行Task
CoarseGrainedExecutorBackend的模式匹配,主要是DriverActor发送数据给Executor的信息
这里做的工作是拿到序列化器,将Task反序列化,将反序列化的Task放入线程池执行。
下面是Executor的launchTask()方法,主要的逻辑是将创建一个TaskRunner对象将Task的信息封装信息然后使用线程池执行。
总结
1.提交Task主要是迭代TaskSet一个一个的取出Task进行序列化之后向Executor发送序列化好的Task
2.Executor执行Task,创建一个TaskRunner对象将Task的信息封装信息然后使用线程池执行
长按下面的二维码关注小编哟!