Spark遵循主從架構。它的集群由一個主伺服器和多個從伺服器組成。
Spark架構依賴於兩個抽象:
- 彈性分佈式數據集(RDD)
- 有向無環圖(DAG)
彈性分佈式數據集(RDD)
彈性分佈式數據集是可以存儲在工作節點上的記憶體中的資料項目組。
- 彈性:失敗時恢復數據。
- 分佈式:數據分佈在不同的節點之間。
- 數據集:數據組。
稍後將詳細瞭解RDD。
有向無環圖(DAG)
有向無環圖是一種有限的直接圖,它對數據執行一系列計算。每個節點都是RDD分區,邊緣是數據頂部的轉換。
下麵來瞭解Spark架構。
驅動程式
驅動程式是一個運行應用程式,由main()
函數並創建SparkContext
對象的進程。SparkContext
的目的是協調spark應用程式,作為集群上的獨立進程集運行。
要在群集上運行,SparkContext
將連接到不同類型的群集管理器,然後執行以下任務:
- 它在集群中的節點上獲取執行程式。
- 它將應用程式代碼發送給執行程式。這裏,應用程式代碼可以通過傳遞給
SparkContext
的JAR或Python檔來定義。 - 最後,
SparkContext
將任務發送給執行程式以運行。
集群管理器
集群管理器的作用是跨應用程式分配資源。Spark能夠在大量集群上運行。
它由各種類型的集群管理器組成,例如:Hadoop YARN,Apache Mesos和Standalone Scheduler。
這裏,獨立調度程式是一個獨立的Spark集群管理器,便於在一組空機器上安裝Spark。
工作節點
- 工作節點是從節點
- 它的作用是在集群中運行應用程式代碼。
執行程式
- 執行程式是為工作節點上的應用程式啟動的進程。
- 它運行任務並將數據保存在內存或磁片存儲中。
- 它將數據讀寫到外部源。
- 每個應用程式都包含其執行者。
任務
- 任務被發送給一個執行程式的工作單位。