聊聊spark這個大數據計算框架

Spark是基於內存計算的大數據並行計算框架。Spark基於內存計算,提高了其在大數據環境下數據處理的實時性,同時保證了高容錯性和高可伸縮性。

Spark項目包含多個緊密集成的組件。Spark的核心是一個對由很多計算任務組成的、運行在多個工作機器或者是一個計算集羣上的應用進行調度、分發以及監控的計算引擎。由於Spark的核心引擎有着速度快和通用的特點,因此 Spark 還支持爲各種不同應用場景專門設計的高級組件,比如SQL和機器學習等。這些組件關係密切並且可以相互調用,我們可以很方便地組合使用這些的組件。

各組件間密切結合的設計原理有這樣幾個優點:

首先,軟件棧中所有的程序庫和高級組件都可以從下層的改進中獲益。即是當 Spark 的核心引擎新引入了一個優化時,上層的高級組件在使用時也都能自動獲得性能提升。

其次,運行整個軟件棧的代價變小了,不再需要使用某個框架時另外安裝這個框架,只需要一個spark框架就可以了。這些代價包括系統的部署、維護、測試、支持等。這意味着可以不斷在spark上擴展新的功能,而使用這些功能不需要另外安裝這個功能框架,只需要升級到包含這個功能的版本。

最後,我們能夠構建出無縫整合不同處理模型的應用。例如,我們可以利用 Spark在一個應用中就能實現將數據流中的數據使用機器學習算法進行實時分類。同時還可以進行其他的操作。

對於使用spark進行計算任務的優點:

1)支持多個框架和無縫結合

Spark支持複雜查詢,而且spark還支持SQL查詢、流式計算、機器學習和圖算法。同時,用戶可以在同一個工作流中無縫搭配這些計算框架。

2)快速處理計算任務

Spark是由scala編寫,scala語言具有簡潔和豐富的表達力。另外spark充分利用和集成Hadoop等其他第三方組件,spark通過將中間結果緩存在內存減少磁盤I/O來達到性能的提升。

3)支持多種語言編寫的程序

Spark支持通過scala、Java及Python編寫的程序,並且自帶了80多個算子,同時允許在shell中進行交互式計算。用戶可以利用spark像寫單機程序一樣書寫分佈式程序,輕鬆利用spark搭建大數據內存計算平臺並充分利用內存計算,實現海量數據的實時處理。

4)兼容Hadoop組件

Spark可以獨立運行,除了可以運行在當下的yarn等集羣管理系統之外,還可以讀取已有的任何Hadoop數據。他可以運行在任何Hadoop數據源上,如Hive、HBase、HDFS等。這個特性可以讓用戶輕易遷移已有的持久化層數據。

沒有什麼完美的事物,Spark同樣也不例外,spark主要用來計算的RDD模型適合的是粗粒度的全局數據並行計算,不適合細粒度的、需要異步更新的計算。如果要針對特定工作負載達到最優性能,還是需要使用一些其他的大數據框架。例如,流計算中的storm在實時性需求很高的場合要比spark Streaming更勝一籌。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章