Spark大數據處理框架入門-包括生態系統、運行流程以及部署方式

Spark 大數據處理框架簡介

Spark大數據處理框架入門-包括生態系統、運行流程以及部署方式

Apache Spark 是專為大規模數據處理而設計的快速通用的計算引擎。Spark是UC Berkeley AMP lab (加州大學伯克利分校的AMP實驗室)所開源的類Hadoop MapReduce的通用並行框架。Spark,擁有Hadoop MapReduce所具有的優點;但不同於MapReduce的是——Job中間輸出結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用於數據挖掘與機器學習等需要迭代的MapReduce的算法

Spark 框架核心組件,以及Spark和Hadoop生態關係

Spark具有如下4個主要特點:

  • 運行速度快 - Spark 使用先進的DAG(Directed Acyclic Graph,有向無環圖)執行引擎,以支持循環數據流與內存計算,基於內存的執行速度可比Hapdoop MapReduce快上百倍。
  • 容易使用 - Spark 支持使用Scale、Java、Python等,並且可以通過Spark Shell進行交互式編程。
  • 通用性 - Spark 提供了完整的技術棧,包括SQL查詢、流式計算、機器學習等組件。
  • 運行模式多樣 - Spark 可以運行於獨立的集群模式,或者運行於Hadoop中,也可以運行於Amazon EC2等雲環境中,並且可以訪問 HDFS、Cassandra、HBase、Hive等多種數據源。

Spark 生態系統

Spark的設計遵循“一個軟件棧滿足不同應用場景”的理念,逐漸形成了一套完整的生態系統,既能夠提供內存計算框架,也可以支持SQL即席查詢、實時流式計算、機器學習和圖計算等。

Spark大數據處理框架入門-包括生態系統、運行流程以及部署方式

Spark 專注於數據的處理分析,而數據的存儲還是藉助於Hadoop HDFS、Amazon S3等來實現。

Spark 可以部署在資源管理器YARN之上。

Spark 生態系統主要包含了:

  • Spark Core
  • Spark SQL
  • Spark Streaming
  • MLlib(機器學習)
  • GraphX(圖計算)

Spark 運行流程

Spark 運行流程如下所示。

(1)當一個Spark 應用被提交時,首先需要為這個應用構建起基本的運行環境,即由任務控制節點(Driver)創建一個SparkContext,由SparkContext 負責和集群管理器(Cluster Manager)的通信以及資源的申請、任務的分配和監控等。

Spark大數據處理框架入門-包括生態系統、運行流程以及部署方式

(2)集群管理器為Executor 分配資源,並啟動Executor 進程,Executor 運行情況將隨著心跳發送給Cluster Manager上。

(3)SparkContext 根據RDD 的依賴關係構建DAG 圖,DAG圖提交給DAG 調度器(DAG Scheduler)進行解析,將DAG 圖分解成多個階段(Stage,每個階段都是一個任務集),並且計算出各個階段之間的依賴關係,然後把一個個任務集提交給底層的任務調度器(Task Scheduler)進行處理。

Spark大數據處理框架入門-包括生態系統、運行流程以及部署方式

任務調度器將任務(Task)分發給Executor 執行,同時SparkContext 將應用程序代碼發送給 Executor。

(4)任務在Executor 上運行,把執行結果反饋給任務調度器,然後反饋給DAG 調度器,運行完畢後寫入數據並釋放所有資源。

Spark 部署方式

目前,Spark 支持3中不同類型的部署方式,包括Standalone、Spark on YARN和Spark on Mesos。

Spark大數據處理框架入門-包括生態系統、運行流程以及部署方式

  • Standalone- Spark獨立部署意味著Spark佔據HDFS(Hadoop分佈式文件系統)頂部的位置,Spark 框架自身也自帶了完整的資源調度管理服務,可以獨立部署到一個集群中。
  • Spark on YARN - Spark 可以運行於YARN之上,和Hadoop 進行統一部署。資源管理和調度依賴YARN,分佈式存儲依賴HDFS。
  • Spark on Mesos - Mesos 是一種資源調度管理框架,可以為運行在它上面的Spark 提供資源調度服務。

在Spark出現之前,為了能同時進行批處理和流出來,通常會採用 Hadoop+Storm架構。

在這種部署架構中,Hadoop和Storm框架部署在資源管理框架YARN/Mesos之上,接受統一的資源管理和調度,並共享底層的數據存儲(HDFS、HBase、Cassandra等)。

Hadoop 負責對批量歷史數據的實時查詢和離線分析,而Storm 則負責對流數據的實時處理。如下圖所示。

Spark大數據處理框架入門-包括生態系統、運行流程以及部署方式

上面的架構部署佈局繁瑣。由於Spark同時支持批處理和流程,因此可以從上述的Hadoop+Storm 架構,轉向Spark 架構。

Spark大數據處理框架入門-包括生態系統、運行流程以及部署方式

其中Sparking Streaming的原理是將流數據分解成一系列短小的批處理作業,每個短小的批處理作業使用面向批處理的Spark Core進行處理,通過這種方式變相實現流計算,而不是真正實時的流計算,因而通常無法實現毫秒級的響應。


分享到:


相關文章: