
1、通過Spark的腳本spark-submit初始化SparkContext
2、初始化SparkContext會初始化兩個非常重要的物件DAGScheduler和TaskScheduler
3、當DAGScheduler和TaskScheduler創建成功后,會生成一個Application,注冊到Master節點,Application中封裝的是提交的各種引數(核數、記憶體等)以及所需要的的jar包,參考:./spark-submit --master xxx --executor-memeory xx --total-executor-cores xx
4、Master在接收到Driver端提交過來的Application后,會通過資源調度計算Application需要的資源,并將任務發送到Worker節點
5、Worker收到Master發來的任務請求,會啟動Executor,里面封裝的是各種資源
6、當Worker內的Executor啟動完成,并且成功床架執行緒池后,集群的準備作業完成,會向Driver端反向注冊,準確的說是想TaskScheduler注冊,至此,SparkContext的初始化完成
7、此時開始執行任務,我們代碼中沒每遇到一個Action算子,都會觸發一個job
8、將job劃分為多個stage,通過stage的劃分演算法,進行階段劃分
9、劃分完stage后,會在stage的內部提交task,通過TaskSet將task提交給TaskSceduler
10、TaskSceduler在接收到任務后,會將task分發到不同Executor執行
11、在提交程序中中,內部會通過本地化級別,對任務進行級別劃分,共有5種級別
12、TaskRunner執行Task,以FIFO的模式進行任務調度
13、Task內部,會將Task分為兩種:上游Task(MapTask)和下游Task(ReduceTask)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/170146.html
標籤:其他
上一篇:阿里面試官純手打:金九銀十跳槽必會Java核心知識點筆記整理
下一篇:如何將一個VUE作為底層模板?
