詳解spark提交流程(一)
1.spark應(yīng)用程序的機(jī)器
2.shell中spark-submit腳本提交程序
3.根據(jù)選擇的提交方式?jīng)Q定driver進(jìn)程所啟動(dòng)節(jié)點(diǎn)
4.spark-submit方式為spark standalone方式驹沿,其實(shí)會(huì)通過反射的方式創(chuàng)建和構(gòu)造一個(gè)driverActor進(jìn)程
5.創(chuàng)建sparkContext對(duì)象
6.sparkContext再初始化的時(shí)候喷橙,其主要為創(chuàng)建DAGschedular以及創(chuàng)建TaskScheduler
7.DAGScheduler-->job的切分--->創(chuàng)建TaskSet
8.TaskScheduler-->TaskSet被打散
9.TaskScheduler實(shí)際上是負(fù)責(zé)通過它對(duì)應(yīng)的一個(gè)后臺(tái)進(jìn)程,去鏈接Master注冊(cè)這個(gè)Application
10.Master接收到Application注冊(cè)過來的請(qǐng)求之后蜂莉,會(huì)用資源調(diào)度的算法且蓬,在spark集群worker上啟動(dòng)多個(gè)excutor
11.excutor啟動(dòng)之后會(huì)反向注冊(cè)到Driver上之后欣硼,Driver結(jié)束SparkContext初始化,會(huì)繼續(xù)執(zhí)行我們自己寫的代碼
12.TaskScheduler會(huì)把TaskSet里的每個(gè)task提交到右邊的excutor上去執(zhí)行 ?此處為分配算法 后續(xù)會(huì)詳解
13.taskRunner-->每個(gè)線程來運(yùn)行一個(gè)taskRunner
14.總結(jié)恶阴,最后整個(gè)這個(gè)spark應(yīng)用程序的執(zhí)行是stage分批次的作為taskSet提交到executor里面執(zhí)行诈胜,每個(gè)Task針對(duì)Rdd的一個(gè)partition執(zhí)行我們的算子和函數(shù)。