1.啟動spark集群 start-all.sh 啟動spark中的master和worker節點
2.worker程序啟動起來之後向master傳送註冊資訊 worker 是基於 akka的事件驅動模型
3.worker 註冊成功之後不斷的向master傳送心跳包 監聽主節點是否存在
5.master收到driver提交的作業請求之後向worker節點指派對應的作業,其實就是對應的worker節點啟動對應的executor程序
6.worker節點 接收到master節點啟動的executer任務後,啟動對應的程序,並向master匯報可以接收任務
7.當executor程序啟動之後,就向driver程序反向註冊,(基於akka)告訴driver誰可以接收任務
8.driver 接收到註冊之後就知道向誰傳送spark作業
9.dagscheduler元件 根據我們編寫的spark作業,將spark作業分成若干階段的stage,然後為每乙個階段組裝一批task 組成taskset 然後將這些taskset交給 taskscheduler, 由taskscheduler來將任務分發給對應的executor
10.當executor程序接收到driver傳送過來的taskset之後 進行反序列化,將這些task封裝進taskrunner的執行緒中 然後放進本地執行緒池,排程我們得作業執行
Spark執行架構
job 包含多個task組成的平行計算,乙個dag觸發的作業,由action運算元觸發,在sparkcontext中通過runjob方法向spark提交job stage job的排程單位,每個job會根據rdd的寬依賴關係被切分成很多stage,每個stage中包含一組相同的task,這組task...
Spark執行架構
在driver program中新建sparkcontext 包含sparkcontext的程式稱為driver program 2 sparkcontext向資源管理器申請執行executor資源,並啟動standaloneexecutorbackend,executor向sparkcontent...
Spark執行架構
spark執行架構要背下來 driver program 執行main函式的程序,並且建立了乙個sparkcontext cluster manager 乙個從cluster申請資源的外部服務 deploy mode 區分driver程序跑在 client模式下,driver跑在本地 cluster...