Spark的核心概念
大多數應該都要有實際寫過 Spark 程式和提交任務到 Spark 集群后才有更好的理解
1、Application:表示你的應用程式,包含一個 Driver Program 和若干 Executor
2、Driver Program:Spark 中的 Driver 即執行上述 Application 的 main()函式並且建立 SparkContext,其中建立 SparkContext 的目的是為了準備 Spark 應用程式的執行環境。由 SparkContext 負責與 ClusterManager 通訊,進行資源的申請,任務的分配和監控等。程式執 行完畢後關閉 SparkContext
3、ClusterManager:在 Standalone 模式中即為 Master(主節點),控制整個叢集,監控 Worker。 在 YARN 模式中為資源管理器。
4、RDD:Spark的基本計算單元,一組RDD可形成執行的有向無環圖RDD Graph
5、DAGScheduler::根據 Job 構建基於 Stage 的 DAG,並提交 Stage 給 TaskScheduler,其劃分 Stage 的依據是 RDD 之間的依賴關係:寬依賴,也叫 shuffle 依賴
6、SparkContext:整個應用的上下文,控制應用程式的生命週期,負責排程各個運算資源, 協調各個 Worker 上的 Executor。初始化的時候,會初始化 DAGScheduler 和 TaskScheduler 兩個核心元件。
7、TaskScheduler:將 TaskSet 提交給 Worker(叢集)執行,每個 Executor 執行什麼 Task 就 是在此處分配的。
8、Worker::叢集中可以執行 Application 程式碼的節點。在 Standalone 模式中指的是通過 slave 檔案配置的 worker 節點,在 Spark on Yarn 模式中指的就是 NodeManager 節點。
9、Executor:某個 Application 執行在 Worker 節點上的一個程序,該程序負責執行某些 task, 並且負責將資料存在記憶體或者磁碟上。在 Spark on Yarn 模式下,其程序名稱為 CoarseGrainedExecutorBackend,一個 CoarseGrainedExecutorBackend 程序有且僅有一個 executor物件,它負責將Task包裝成taskRunner,並從執行緒池中抽取出一個空閒執行緒執行Task, 這樣,每個 CoarseGrainedExecutorBackend 能並行執行 Task 的資料就取決於分配給它的 CPU 的個數。
10、Stage:每個 Job 會被拆分很多組 Task,每組作為一個 TaskSet,其名稱為 Stage
11、Job:包含多個 Task 組成的平行計算,是由 Action 行為觸發的
12、Task:在 Executor 程序中執行任務的工作單元,多個 Task 組成一個 Stage
13、SparkEnv:執行緒級別的上下文,儲存執行時的重要元件的引用。SparkEnv 內建立幷包含 如下一些重要元件的引用。 MapOutPutTracker:負責 Shuffle 元資訊的儲存。
BroadcastManager:負責廣播變數的控制與元資訊的儲存。
BlockManager:負責儲存管理、建立和查詢塊。
MetricsSystem:監控執行時效能指標資訊。
SparkConf:負責儲存配置資訊。