1. 程式人生 > >spark任務提交流程(standalone)

spark任務提交流程(standalone)

spark程式使用spark-submit方式提交,如果是standalone叢集的話,會在提交任務的節點啟動一個driver程序;
dirver程序啟動以後,首先是構建sparkcontext,sparkcontext主要包含兩部分:DAGScheduler和TaskScheduler
TaskScheduler會尋找Master節點,Master節點接收到Application的註冊請求後,通過資源排程演算法,在自己的叢集的worker上啟動Executor程序;啟動的executor也會反向註冊到TaskScheduler上

Executor程序內部會維護一個執行緒池,Executor每接收到一個task,都會用TaskRunner封裝task,然後從執行緒池中取出一個執行緒去執行taskTaskRunner主要包含兩種task:ShuffleMapTask和ResultTask,除了最後一個stage是ResultTask外,其他的stage都是ShuffleMapTaskExecutor註冊到TaskScheduler後,driver程序會對程式進行劃分,劃分成一個或者多個action;每個action就是一個job;DAGScheduler通過stage劃分演算法對job進行劃分;每個stage建立一個taskset;然後DAGScheduler將taskset提交給TaskScheduler去執行;
這裡寫圖片描述