Spark 核心組件
0. 說明
1. RDD
輕量級,虛的(輕量級數據集合,沒有實際數據)
2. 依賴
RDD 的依賴是 子 RDD 上的每個分區和父 RDD 分區數量上的對應關系
Dependency
|----ShuffleDependency (寬依賴)
|----NarrowDependency (窄依賴:子 RDD 的每個分區依賴少量的父 RDD 分區)
|-----One2OneDependency (一對一依賴)
|-----RangeDependency(範圍依賴)
|-----PruneDependency(Prune 依賴)
3. Stage(階段)
並行的 task 集合,同一 Stage 的所有任務有著相同的 Shuffle 依賴。
階段的劃分按照 Shuffle 標記來進行的。
階段類型有兩種,ShuffleMapStage 和ResultStage。
【ShuffleMapStage】
該階段任務的結果是下一個階段任務的輸入。需要跟蹤每個分區所在的節點。
任務執行期間的中間過程,保存task的輸出數據供下一個 reduce 進行 fetch(抓取) 。
該階段可以單獨提交。
【 ResultStage】
結果結果直接執行 RDD 的 action 操作。
對一些分區應用計算函數(不一定需要在所有分區進行計算,比如說first())。
4. Task
task 是 Spark 執行單位,有兩種類型。
【ShuffelMapTask】
在 ShuffleMapStage 由多個 ShuffleMapTask 組成。
【ResultTask】
ResultStage 由多個 ResultTask 組成,結果任務直接 task 後,將結果回傳給 driver。
driver:
5. job
一個 action 就是一個 job
6. Application
一個應用可以包含多個 job
Spark 核心組件