Spark源碼解析(五):Task提交流程

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)注小編喲!



?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Apache Spark 是專為大規(guī)模數(shù)據(jù)處理而設(shè)計的快速通用的計算引擎。Spark是UC Berkeley AM...
    大佛愛讀書閱讀 2,979評論 0 20
  • 1.1、 分配更多資源 1.1.1、分配哪些資源? Executor的數(shù)量 每個Executor所能分配的CPU數(shù)...
    miss幸運(yùn)閱讀 3,283評論 3 15
  • 上一篇文章講解了RDD的基本概念, 這篇文章嘗試分析當(dāng)Spark拿到一個RDD之后是如何處理它的. 文中會涉及到S...
    福克斯記閱讀 6,142評論 2 17
  • 1、 性能調(diào)優(yōu) 1.1、 分配更多資源 1.1.1、分配哪些資源? Executor的數(shù)量 每個Executor所...
    Frank_8942閱讀 4,840評論 2 36
  • 細(xì)雨綿綿,午后的時光,讓人昏昏沉沉。沒有那黎明時的激情涌動,那迎著朝陽的臉龐此刻疲倦難掩困意,仿佛腦海中無數(shù)個場景...
    點(diǎn)燃回憶閱讀 356評論 1 2

友情鏈接更多精彩內(nèi)容