您好,登錄后才能下訂單哦!
本篇內容主要講解“Spark的架構與運行邏輯”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Spark的架構與運行邏輯”吧!
一:Spark的架構。
1. Driver:運行Application的main()函數并且創建SparkContext。
2. Client:用戶提交作業的客戶端。
3. Worker:集群中任何可以運行 Application 代碼的節點,運行一個或多個 Executor
進程。
4. Executor :運行在 Worker 的 Task 執行器, Executor 啟動線程池運行 Task,并且
負責將數據存在內存或者磁盤上。每個 Application 都會申請各自的 Executor 來處理任務。
5. SparkContext:整個應用的上下文,控制應用的生命周期。
6. RDD: Spark 的基本計算單元,一組 RDD 形成執行的有向無環圖 RDD Graph。
7. DAG Scheduler:根據 Job 構建基于 Stage 的 DAG 工作流,并提交 Stage 給 TaskScheduler。
8. TaskScheduler:將 Task 分發給 Executor 執行。
9. SparkEnv:線程級別的上下文,存儲運行時的重要組件的引用。
二:運行邏輯。
1. Spark 作業提交流程。
如下圖,Client提交應用,Master找到一個Worker啟動Driver,Driver向Master或者資源管理器申請資源,之后將應用轉化為RDD有向無環圖,再由DAGScheduler將RDD有向無環圖轉化為Stage的有向無環圖提交給TaskScheduler,由TaskScheduler提交任務給Executor進行執行。任務執行的過程中其他組件在協同工作確保整個應用順利執行。
2. Spark 作業運行邏輯。
如下圖,在 Spark 應用中,整個執行流程在邏輯上運算之間會形成有向無環圖。Action 算子觸發之后會將所有累積的算子形成一個有向無環圖,然后由調度器調度該圖上的任務進行運算。 Spark 的調度方式與 MapReduce 有所不同。 Spark 根據 RDD 之間不同的依賴關系切分形成不同的階段( Stage),一個階段包含一系列函數進行流水線執行。圖中的 A、 B、 C、 D、 E、 F,分別代表不同的 RDD, RDD 內的一個方框代表一個數據塊。數據從 HDFS 輸入 Spark,形成 RDD A 和 RDD C, RDD C 上執行 map 操作,
轉換為 RDD D, RDD B 和 RDD E 進行 join 操作轉換為 F,而在 B 到 F 的過程中又會
進行 Shuff le。最后 RDD F 通過函數 saveAsSequenceFile 輸出保存到 HDFS 中。
到此,相信大家對“Spark的架構與運行邏輯”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。