1. 程式人生 > 其它 >Spark學習<->:設計理念和基本架構

Spark學習<->:設計理念和基本架構

Spark學習
-本系列學習書籍《Spark核心設計的藝術:架構設計與實現》--耿嘉安
一.本文內容:概括性講述Spark的設計理念和基本架構
二.Spark設計理念
1.Spark包含很多子模組,理解這些模組有助於我們掌握Spark的設計思想。Spark的模組按照重要程度可分為核心功能和擴充套件功能。核心功能是Spark設計理念的核心實現,也是Spark陸續加入新功能的基礎。在核心功能之上,通過不斷地將豐富的擴充套件功能持續整合到Spark中,使得Spark滿足更多市場、應用和使用者的需求,促使Spark生態圈更加繁榮。
2.Spark在程式設計模型方面沒有采用Hadoop的MapReduce程式設計模型,而是封裝了豐富的轉換與執行的API。開發人員可以充分利用這些API編寫自己的Spark應用程式,而不用拘泥於如何套用MapReduce程式設計模型中的Mapper或Reducer。Spark提供的轉換API將會在底層將資料封裝為RDD,並對這些RDD進行轉換、構建血緣、構建DAG、分片劃分等處理,這些過程都是透明的,使得開發人員能更加專注於自己的業務實現。
3.Spark的模組設計:整個Spark主要由Spark Coke、Spark SQL、Spark Streaming、GraphX、MLlib組成,而後四項的能力都是建立在核心引擎之上
1)Spark核心功能:Spark Core中提供了Spark最基礎與最核心的功能
(1)基礎設施
(2)SparkContext
(3)SparkEnv
(4)儲存體系
(5)排程系統
(6)計算引擎
2)Spark擴充套件功能
(1)Spark SQL
(2)Spark Streaming
(3)GraphX
(4)MLlib
4.Spark的模型設計:
1)Spark程式設計模型
2)RDD計算模型
三.Spark的基本架構
1.從叢集部署的角度來看,Spark叢集由叢集管理器(Cluster Manager)、工作節點(Worker)、執行器(Executor)、驅動器(Driver)、應用程式(Application)等部分組成

  (1)Cluster Manager:Spark的叢集管理器,主要負責對整個叢集資源的分配與管理。Cluster Manager在YARN部署模式下為ResourceManager;在Mesos部署模式下為MesosMaster;在Standalone部署模式下為Master。Cluster Manager分配的資源屬於一級分配,它將各個Worker上的記憶體、CPU等資源分配給Application,但是並不負責對Executor的資源分配。
  (2)Worker:Spark的工作節點。在YARN部署模式下實際由NodeManager替代。
  (3)Executor:執行計算任務的一線元件。主要負責任務的執行及與Worker、Driver的資訊同步。
  (4)Driver:Application的驅動程式,Application通過Driver與Cluster Manager、Executor進行通訊。Driver可以執行在Application中,也可以由Application提交給ClusterManager並由Cluster Manager安排Worker執行。
  (5)Application:使用者使用Spark提供的API編寫的應用程式,Application通過Spark API將進行RDD的轉換和DAG的構建,並通過Driver將Application註冊到Cluster Manager。Cluster Manager將會根據Application的資源需求,通過一級分配將Executor、記憶體、CPU等資源分配給Application。Driver通過二級分配將Executor等資源分配給每一個任務,Application最後通過Driver告訴Executor執行任務。