1. 程式人生 > >Spark學習筆記1:Spark概覽

Spark學習筆記1:Spark概覽

Spark是一個用來實現快速而通用的叢集計算的平臺。

Spark專案包含多個緊密整合的元件。Spark的核心是一個對由很多計算任務組成的,執行在多個工作機器或者是一個計算叢集上的應用進行排程,分發以及監控的計算引擎。Sark核心引擎有著速度快和通用的特點,因此Spark支援為各種不同應用場景專門設計的高階元件,這些元件關係密切並且可以互相呼叫。

Spark各元件密切結合的設計原理的優點:軟體棧中所有的程式庫和高階元件都可以從下層改進中獲益以及能夠構建出無縫整合不同處理模型的應用。

Spark各個元件如下圖:

 

分別對各個元件進行介紹:

  • Spark Core

Spark Core實現了Spark的基本功能,包括任務排程,記憶體管理,錯誤恢復,與儲存系統互動等模組。

Spark Core中還包含了對彈性分散式資料集(RDD)的API定義。RDD表示分佈在多個計算節點上可以並行操作的元素集合,是Spark主要的程式設計抽象。Spark Core提供了建立和操作這些集合的多個API。

  • Spark SQL

Spark SQL是Spark用來操作結構化資料的程式包。通過Spark SQL,可以使用SQL或者Hive的HQL來查詢資料。Spark SQL支援多種資料來源,還支援開發者將SQL和傳統的RDD程式設計的資料操作方式相結合。

  • Spark Streaming

Spark Streaming是Spark提供的對實時資料進行流式計算的元件。比如生產環境中的網頁伺服器日誌,Spark Streaming提供了用來操作資料流的API,並且與Spark Core中的RDD API高度對應。Spark Streaming還支援與Spark Core同級別的容錯性,吞吐量以及可伸縮性。

  • MLlib

Spark中的一個包含常見的機器學習功能的程式庫,叫做MLlib。MLlib提供了很多種機器學習演算法,包括分類,迴歸,聚類,協同過濾等,還提供了模型評估,資料匯入等額外的支援功能。

  • 叢集管理器

Spark設計為可以高效地在一個計算節點到數千個計算節點之間伸縮計算。為了實現這樣的要求,同時獲得最大靈活性,Spark支援在各種叢集管理器上執行,最常見的就是Hadoop YARN,Spark自帶的一個簡易排程器,叫做獨立排程器