Spark 任務排程機制

2021-09-19 15:33:28 字數 1397 閱讀 4894

driver執行緒主要是初始化sparkcontext物件,準備執行所需的上下文,然後一方面保持與rpc連線,通過申請資源,另一方面根據使用者業務邏輯開始排程任務,將任務下發到已有的空閒executor上。

executor程序起來後,會向driver反向註冊,註冊成功後保持與driver的心跳,同時等待driver分發任務,當分發的任務執行完畢後,將任務狀態上報給driver

dagscheduler負責stage級的排程,主要是將job切分成若干stages,並將每個stage打包成taskset交給taskscheduler排程。taskscheduler負責task級的排程,將dagscheduler給過來的taskset按照指定的排程策略分發到executor上執行,排程過程中schedulerbackend負責提供可用資源,其中schedulerbackend有多種實現,分別對接不同的資源管理系統。

具體劃分策略是,由最終的rdd不斷通過依賴回溯判斷父依賴是否是寬依賴,即以shuffle為界,劃分stage,窄依賴的rdd之間被劃分到同乙個stage中,可以進行pipeline式的計算。劃分的stages分兩類,一類叫做resultstage,為dag最下游的stage,由action方法決定,另一類叫做shufflemapstage,為下游stage準備資料,

taskscheduler會將taskset封裝為tasksetmanager加入到排程佇列中,tasksetmanager結構如下圖所示。

tasksetmanager負責監控管理同乙個stage中的taskstaskscheduler就是以tasksetmanager為單元來排程任務。

Spark的執行基本流程以及任務排程機制

cluster 模式用於監控和排程的 driver 模組啟動在 yarn 集群中執行,一般用於生產環境當中。excutor 程序啟動後會向 driver 進行反向註冊 內部通訊時 excutorbackend 向 excutor 全部註冊完成後driver 開始執行 main 函式 之後執行到 ac...

排程機任務排程問題

題目描述 假設有乙個 排程機,有n個任務相同的任務需要排程到m臺伺服器上執行,由於每台伺服器的配置不一樣,因此,伺服器執行乙個任務所花費的時間也不同。現在假設第i個伺服器執行乙個任務需要的時間為t i 假如,有2個執行機a與b,執行乙個任務分別需要7min和10min,有6個任務待排程。如果平分這6...

Android執行緒排程機制

2014 2 24 閱讀789 在android weekly上看到了一篇關於android執行緒排程的文章,感覺挺不錯的,試著將其翻譯了一下,這篇文章是關於android中線程是如何排程的,以及怎麼樣顯示設定執行緒優先順序保證應用程式在 多個執行緒在後台執行時保持響應。執行緒排程是指作業系統負責決...