2.1. 所有executor都反向註冊到driver上之後,driver結束sparkcontext初始化,會繼續執行我們編寫的**
2.2. 每執行乙個action就會建立乙個job,job會提交給dagscheduler
2.3 dagscheduler會採用自己的stage劃分演算法將job劃分為多個stage,然後每個stage建立乙個taskset,在此過程中,stage劃分演算法非常重要,後續會進行詳細研究。
2.4 dagscheduler會將taskset傳遞給taskscheduler,taskscheduler會把taskset裡每乙個task提交到executor上執行(task分配演算法)
2.5 executor每接收乙個task都會用taskrunner來封裝task,然後從執行緒池裡面取出乙個執行緒,執行這個task,taskrunner將我們編寫的**,也就是要執行的運算元以及函式,拷貝,反序列化,然後執行task。
2.6 task有兩種,shufflemaptask和resulttask。只有最後乙個stage是resulttask,之前的stage,都是shufflemaptask.
2.7 所以,最後整個spark應用程式的執行,就是將stage分批次作為taskset提交給executor執行,每個task針對rdd的乙個parktition,執行我們定義的運算元和函式,以此類推,直到所有操作執行完為止。
Spark執行機制及提交過程
依賴 寬依賴和窄依賴,rdd具有分割槽 寬依賴 多個子rdd的分割槽依賴同乙個父rdd的分割槽,類似reducebykey 在父rdd的角度,理解為超生 窄依賴 父rdd的每個分割槽最多被乙個子rdd使用,類似map 在父rdd的角度,理解為獨生 依賴和分割槽 分割槽 rdd分割槽指分布式計算 依賴...
Spark執行機制和提交過程
1.依賴 寬依賴和窄依賴,rdd具有分割槽 寬依賴 多個子rdd的分割槽依賴同乙個父rdd的分割槽,類似reducebykey 在父rdd的角度,理解為超生 窄依賴 父rdd的每個分割槽最多被乙個子rdd使用,類似map 在父rdd的角度,理解為獨生 2.依賴和分割槽 分割槽 rdd分割槽指分布式計...
git hub 提交過程
git init 初始化本地倉庫 git add 將 放到提交區 git commit m commit 提交到要地倉庫,並寫一些注釋 m 代表注釋 git remote add origin git github.com shengxuanyan xiaofufu.git 連線遠端倉庫並建了乙個名...