Spark任務執行過程解析

2021-09-11 15:17:44 字數 2040 閱讀 5854

spark-submit->sparksubmit->main->submit->dorunmain->runmain->通過反射,建立我們編寫的主類的例項物件,呼叫main方法->開始執行我們的**->初始化sparkcontext物件->建立初始rdd->出發action運算元->提交job->worker執行任務->任務結束

spark任務的本質:將rdd以來關係切分成乙個個stage,然後將stage作為taskset分批次的傳送到executor上執行。

過程總結:

1.將我們編寫的程式打包jar

2.提交spark-submit指令碼到集群上執行

3.執行sparksubmit的main方法,在這個方法中通過反射的方式建立我們編寫的主類的例項物件,然後呼叫mian方法,開始執行我們的**(注意:我們的spark程式driver就執行在sparksubmit程序中)

4.當**執行到建立sparkcontext物件時,就開始初始化sparkcontext物件。

5.在初始化sparkcontext物件的時候,會建立兩個特別重要的物件分別是:dagscheduler和taskscheduler.

dagscheduler:作用:將rdd的以來關係切分成乙個乙個的stage,然後將stage作為taskset提交到taskscheduler中的driveractor
6.在構建taskscheduler的同時,會建立兩個特別重要的物件,分別是driveractor和clientactor.

clientacotr作用:向master註冊使用者提交的任務

driveractor作用:接收executor的反向註冊,將任務task提交給executor執行

任務佇列預設是按照fifo(先進先出)順序執行。
9.當輪到我們提交的任務開始執行的時候,就開始呼叫schedule()方法進行任務資源的排程。

10,master將排程好的資源封裝到 launchexecutor中傳送給指定的worker。

11.woker接受到master傳送過來的launchexecutor時,會將其壓縮並封裝到 executorrunner中,然後呼叫這個物件的start方法啟動execuotr(executor在worker中)

12.executor啟動後會向driveractor進行反向註冊

13.driveractor會傳送註冊成功的訊息給executor.

14.executor接受到driveractor註冊成功的訊息後會建立乙個執行緒池,用來執行driveractor傳送過來的task任務

15.當屬於這個任務的所有executor啟動並反向註冊成功,意味著這個任務的環境已經準備好了。driver會結束sparkcontext物件的初始化。也就意味著new context這句**執行完成。

16.當初始化sparkcontext成功後,driver端會繼續執行我們編寫的**,然後開始建立初始的rdd,然後進行一系列的轉換操作,當遇到乙個action運算元的時候,也就意味著出發了乙個job.

17driver會將這個job提交給dagscheduler

18.dagscheduler將接受到的job,從最後乙個運算元開始向前推導,將dag依據寬依賴劃分為乙個個stage,然後stage封裝成taskset,並將taskset中的task任務提交給driveractor.

19.driveractor接受到dagschduler傳送過來的task,會拿到乙個序列化器,對task進行序列化,然後將序列化好的task封裝到launchtask中,然後將launchtask傳送給指定的executor.

20.executor接收到driveractor傳送過來的launchtask後,會拿到乙個反序列化器,對launchtask進行反序列化,封裝到taskrunner中,然後從executor這個執行緒池中獲取乙個執行緒,將反序列化好的任務中的運算元作用在rdd對應的分割槽上。

Spark任務執行原理

首先,先看一幅圖 以上圖中有四個機器節點,driver 和 worker 是啟動在伺服器節點上的程序,這些程序都執行在 jvm 中。上述圖的執行步驟 driver 與集群節點之間有頻繁的通訊。driver 負責任務 tasks 的分發和結果的 任務的排程。如果 task的計算結果非常大就不要 了,會...

Spark 的執行過程

spark 支援 standalone yarn mesos kubernetes 等多種部署方案,幾種部署方案的原理也都一樣,只是不同元件角色命名不同,但核心功能和執行流程差不多。具體部署方式可以看官方文件 spark deploy 上面這張圖是官網上的 spark 的執行流程,具體來看 1,sp...

Spark基礎(三)Spark中的任務執行

容錯機制 spark的架構特點 根據客戶端提交的jar包劃分出來乙個個的rdd,根據rdd之間的lineage關係劃分dag。劃分dag的目的是為了劃分stage。2 dag通過dagscheller劃分為stage 再劃分為taskset 根據劃分出來的dag,將dag送個dagscheduler...