寶付:30分鐘理解Spark的基本原理

一流湧進發表於2019-09-27

1

Spark優勢特點

作為大資料計算框架 MapReduce 的繼任者,Spark 具備以下優勢特性。

01

高效性

不同於 MapReduce 將中間計算結果放入磁碟中,Spark 採用記憶體儲存中間計算結果,減少了迭代運算的磁碟 IO,並透過平行計算 DAG 圖的最佳化,減少了不同任務之間的依賴,降低了延遲等待時間。記憶體計算下,Spark 比 MapReduce 快 100 倍。


02

易用性

不同於 MapReduce 僅支援 Map 和 Reduce 兩種程式設計運算元,Spark 提供了超過 80 種不同的 Transformation 和 Action 運算元,如map, reduce, filter, groupByKey, sortByKey, foreach 等,並且採用函數語言程式設計風格,實現相同的功能需要的程式碼量極大縮小。


03

通用性

Spark 提供了統一的解決方案。Spark 可以用於批處理、互動式查詢(Spark SQL)、實時流處理(Spark Streaming)、機器學習(Spark MLlib)和圖計算(GraphX)。

這些不同型別的處理都可以在同一個應用中無縫使用。這對於企業應用來說,就可使用一個平臺來進行不同的工程實現,減少了人力開發和平臺部署成本。

04

相容性

Spark 能夠跟很多開源工程相容使用。如 Spark 可以使用 Hadoop 的 YARN 和 Apache Mesos 作為它的資源管理和排程器,並且 Spark 可以讀取多種資料來源,如 HDFS、HBase、MySQL 等。 02

Spark基本概念

RDD:是彈性分散式資料集(Resilient Distributed Dataset)的簡稱,是分散式記憶體的一個抽象概念,提供了一種高度受限的共享記憶體模型。

DAG:是 Directed Acyclic Graph(有向無環圖)的簡稱,反映 RDD 之間的依賴關係。

Driver Program:控制程式,負責為 Application 構建 DAG 圖。

Cluster Manager:叢集資源管理中心,負責分配計算資源。

Worker Node:工作節點,負責完成具體計算。

Executor:是執行在工作節點(Worker Node)上的一個程式,負責執行 Task,併為應用程式儲存資料。

Application:使用者編寫的 Spark 應用程式,一個 Application 包含多個 Job。

Job:作業,一個 Job 包含多個 RDD 及作用於相應 RDD 上的各種操作。

Stage:階段,是作業的基本排程單位,一個作業會分為多組任務,每組任務被稱為“階段”。

Task:任務,執行在 Executor 上的工作單元,是 Executor 中的一個執行緒。

總結:Application 由多個 Job 組成,Job 由多個 Stage 組成,Stage 由多個 Task 組成。Stage 是作業排程的基本單位。

03

Spark架構設計

Spark 叢集由 Driver, Cluster Manager(Standalone, Yarn 或 Mesos),以及 Worker Node 組成。對於每個 Spark 應用程式,Worker Node 上存在一個 Executor 程式,Executor 程式中包括多個 Task 執行緒。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69905323/viewspace-2658547/,如需轉載,請註明出處,否則將追究法律責任。

相關文章