Task提交流程
在劃分Stage之后,在對Task進(jìn)行封裝成為TaskSet然后提交給TaskScheduler。
提交流程源碼解析
提交TaskSet
查看TaskSchedulerImpl的160行,可以看到submitTasks()方法,主要代碼如下:
這里主要的的方法是CoarseGrainedSchedulerBackend類的reviveOffers()。
CoarseGrainedSchedulerBackend的reviveOffers()
CoarseGrainedSchedulerBackend中DriverActor的receiveWithLogging()
DriverActor類中的receiveWithLogging()進(jìn)行模式匹配
makeOffers()方法向Executor提交Task
Executor運(yùn)行Task
makeOffers()方法的主要代碼如下:
這里調(diào)用launchTasks(),代碼主要的流程是:
這里做的工作主要是迭代TaskSet然后一個一個的取出Task進(jìn)行序列化之后向Executor發(fā)送序列化好的Task。
Executor執(zhí)行Task
CoarseGrainedExecutorBackend的模式匹配,主要是DriverActor發(fā)送數(shù)據(jù)給Executor的信息
這里做的工作是拿到序列化器,將Task反序列化,將反序列化的Task放入線程池執(zhí)行。
下面是Executor的launchTask()方法,主要的邏輯是將創(chuàng)建一個TaskRunner對象將Task的信息封裝信息然后使用線程池執(zhí)行。
總結(jié)
1.提交Task主要是迭代TaskSet一個一個的取出Task進(jìn)行序列化之后向Executor發(fā)送序列化好的Task
2.Executor執(zhí)行Task,創(chuàng)建一個TaskRunner對象將Task的信息封裝信息然后使用線程池執(zhí)行
????????????????????????????????????長按下面的二維碼關(guān)注小編喲!