1)Application
用戶在 spark 上構建的程序,包含了 driver 程序以及在集羣上運行的程序代碼,物理機器上涉及了 driver,master,worker 三個節點。
2)Driver Program
創建 sc ,定義 udf 函數,定義一個 spark 應用程序所需要的三大步驟的邏輯:加載數據集,處理數據,結果展示。
3)Cluster Manager
集羣的資源管理器,在集羣上獲取資源的外部服務。
4)Worker Node
集羣中任何一個可以運行spark應用代碼的節點。Worker Node就是物理節點,可以在上面啓動Executor進程。
5)Executor
Executor 是一個應用程序運行的監控和執行容器,它的主要職責是:
- 初始化程序要執行的上下文 SparkEnv,解決應用程序需要運行時的 jar 包的依賴,加載類。
- ExecutorBackend 向 cluster manager 彙報當前的任務狀態,這一方面有點類似 hadoop的 tasktracker 和 task。
6)Jobs
包含很多 task 的並行計算,可以認爲是 Spark RDD 裏面的 action,每個 action 的觸發會生成一個job。 用戶提交的 Job 會提交給 DAGScheduler,Job 會被分解成 Stage,Stage 會被細化成 Task,Task 簡單的說就是在一個數據 partition 上的單個數據處理流程。
7)Stage
Stage 的劃分以 shuffle 和 result 這兩種類型來劃分。
8)Task
被送到 executor 上的工作單元。
9)Partition
Partition 類似 hadoop 的 Split,計算是以 partition 爲單位進行的,當然 partition 的劃分依據有很多,這是可以自己定義的,像 HDFS 文件,劃分的方式就和 MapReduce 一樣,以文件的 block 來劃分不同的 partition。
10)RDD(Resilient Distributed Datasets)
- 彈性分佈式數據集, 是分佈式內存的一個抽象概念,RDD提供了一種高度受限的共享內存模型。
- 它具備像MapReduce等數據流模型的容錯特性,並且允許開發人員在大型集羣上執行基於內存的計算。
- RDD是隻讀的、分區記錄的集合。
- RDD不需要物化。
- RDD作爲數據結構,本質上是一個只讀的分區記錄集合。一個RDD可以包含多個分區,每個分區就是一個dataset片段。RDD可以相互依賴。