從0開始學習spark(7)SparkCore 核心知識複習與核心機制詳解

在這裏插入圖片描述


沒有看前面的同學可以回顧一下:**
6.Spark共享變量之累加器和廣播變量的使用!!!
5.RDD常用算子用法訓練(附習題答案)(aggregateByKey與combineByKey)!!!
4.Spark Rdd常用算子和RDD必備知識
3.spark core 核心知識
2.spark 之 wordcount入門
1.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、SparkContext:整個應用的上下文,控制應用程序的生命週期,負責調度各個運算資源, 協調各個 Worker 上的 Executor。初始化的時候,會初始化 DAGScheduler 和 TaskScheduler 兩個核心組件。

5、RDD:Spark 的基本計算單元,一組 RDD 可形成執行的有向無環圖 RDD Graph。

6、DAGScheduler:根據 Job 構建基於 Stage 的 DAG,並提交 Stage 給 TaskScheduler,其劃分 Stage 的依據是 RDD 之間的依賴關係:寬依賴,也叫 shuffle 依賴

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:負責存儲配置信息。


Spark 運行架構特點

1、每個 Application 獲取專屬的 executor 進程,該進程在 Application 期間一直駐留,並以 多線程方式運行 tasks。這種 Application 隔離機制有其優勢的,無論是從調度角度看(每個 Driver 調度它自己的任務),還是從運行角度看(來自不同 Application 的 Task 運行在不同的 JVM 中)。當然,這也意味着 Spark Application 不能跨應用程序共享數據,除非將數據寫入 到外部存儲系統。

2、Spark 與資源管理器無關,只要能夠獲取 executor 進程,並能保持相互通信就可以了。

3、提交 SparkContext 的 Client 應該靠近 Worker 節點(運行 Executor 的節點),最好是在同 一個 Rack 裏,因爲 Spark Application 運行過程中 SparkContext 和 Executor 之間有大量的信息 交換;如果想在遠程集羣中運行,最好使用 RPC 將 SparkContext提交給集羣,不要遠離 Worker 運行 SparkContext。

4、Task 採用了數據本地性和推測執行的優化機制

Spark運行架構圖:

在這裏插入圖片描述

spark stage 階段劃分算法圖:

在這裏插入圖片描述

spark-on-yarn 模式圖:

在這裏插入圖片描述


sparkContext的構建的過程

1、SparkContext 是用戶通往 Spark 集羣的唯一入口,可以用來在 Spark 集羣中創建 RDD、累 加器 Accumulator 和廣播變量 Braodcast Variable

2、SparkContext 也是整個 Spark 應用程序中至關重要的一個對象,可以說是整個應用程序 運行調度的核心(不是指資源調度)

3、SparkContext在實例化的過程中會初始化DAGScheduler、TaskScheduler和SchedulerBackend

4、SparkContext 會調用 DAGScheduler 將整個 Job 劃分成幾個小的階段(Stage),TaskScheduler 會調度每個 Stage 的任務(Task)應該如何處理。另外,SchedulerBackend 管理整個集羣中爲這 個當前的應用分配的計算資源(Executor)

在這裏插入圖片描述

Spark MasterHA機制

在這裏插入圖片描述

Worker節點的原理

在這裏插入圖片描述


在這裏插入圖片描述

記得點贊加關注!!! 不迷路 !!!
人活着真累:上車得排隊,愛你又受罪,喫飯沒香味,喝酒容易醉,掙錢得交稅!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章