1. 程式人生 > >大資料處理為何選擇Spark,而不是Hadoop

大資料處理為何選擇Spark,而不是Hadoop

一.基礎知識
1.Spark
Spark是一個用來實現快速而通用的叢集計算的平臺。
在速度方面,Spark擴充套件了廣泛使用的MapReduce計算模型,而且高效地支援更多計算模式,包括互動式查詢和流處理。
Spark專案包含多個緊密整合的元件。Spark的核心是一個對由很多計算任務組成的、執行在多個工作機器或者是一個計算叢集上的應用進行排程、分發以及監控的計算引擎。

大資料處理為何選擇Spark,而不是Hadoop

Spark的各個元件
2.Hadoop
Hadoop是一個由Apache基金會所開發的分散式系統基礎架構。
使用者可以在不瞭解分散式底層細節的情況下,開發分散式程式。充分利用叢集的威力進行高速運算和儲存。
Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的資料提供了儲存,則MapReduce為海量的資料提供了計算。
二.大資料處理選擇
根據Spark和Hadoop的基礎知識,我們瞭解Spark和Hadoop都 可以進行大資料處理,那我們如何選擇處理平臺呢?
1.處理速度和效能
Spark擴充套件了廣泛使用的MapReduce計算模型,其中Spark有個Directed Acyclic Graph(DAG有向無環圖)執行引擎,支援迴圈資料流和記憶體計算。
Hadoop是磁碟級計算,進行計算時,都需要從磁碟讀或者寫資料,同時整個計算模型需要網路傳輸,導致MapReduce具有高延遲的致命弱點。
據統計,基於Spark記憶體的計算速度比Hadoop MapReduce快100倍以上,基於磁碟的計算速度也要快10倍以上。
2.開發難易度
Spark提供多語言(包括Scala、Java、Python)API,能夠快速實現應用,相比MapReduce更簡潔的程式碼,安裝部署也無需複雜配置。使用API可以輕鬆地構建分散式應用,同時也可以使用Scala和Python指令碼進行互動式程式設計。
3.相容性
Spark提供了一個強大的技術棧,基於”One Stack to rule them all”的理念實現一體化、多元化的大資料處理平臺,輕鬆應對大資料處理的查詢語言Spark SQL、機器學習工具MLlib、圖計算工具GraphX、實時流處理工具Spark Streaming無縫連線。
Hadoop的技術棧則相對獨立複雜,各個框架都是獨立的系統,給整合帶來了很大的複雜和不確定性。
4.相互整合性
Spark可以執行在Hadoop叢集管理Yarn上,這使得Spark可以讀取Hadoop的任何資料。同時它也能讀取HDFS、HBase、Hive、Cassandra以及任何Hadoop資料來源。