大數(shù)據(jù)處理為何選擇Spark,而不是Hadoop
Spark是一個用來實(shí)現(xiàn)快速而通用的集群計算的平臺。在速度方面,Spark擴(kuò)展了廣泛使用的MapReduce計算模型,而且高效地支持更多計算模式,包括交互式查詢和流處理。
一.基礎(chǔ)知識
1.Spark
Spark是一個用來實(shí)現(xiàn)快速而通用的集群計算的平臺。
在速度方面,Spark擴(kuò)展了廣泛使用的MapReduce計算模型,而且高效地支持更多計算模式,包括交互式查詢和流處理。
Spark項(xiàng)目包含多個緊密集成的組件。Spark的核心是一個對由很多計算任務(wù)組成的、運(yùn)行在多個工作機(jī)器或者是一個計算集群上的應(yīng)用進(jìn)行調(diào)度、分發(fā)以及監(jiān)控的計算引擎。

Spark的各個組件
2.Hadoop
Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。
用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力進(jìn)行高速運(yùn)算和存儲。
Hadoop的框架最核心的設(shè)計就是:HDFS和MapReduce。HDFS為海量的數(shù)據(jù)提供了存儲,則MapReduce為海量的數(shù)據(jù)提供了計算。
二.大數(shù)據(jù)處理選擇
根據(jù)Spark和Hadoop的基礎(chǔ)知識,我們了解Spark和Hadoop都 可以進(jìn)行大數(shù)據(jù)處理,那我們?nèi)绾芜x擇處理平臺呢?
1.處理速度和性能
Spark擴(kuò)展了廣泛使用的MapReduce計算模型,其中Spark有個Directed Acyclic Graph(DAG有向無環(huán)圖)執(zhí)行引擎,支持循環(huán)數(shù)據(jù)流和內(nèi)存計算。
Hadoop是磁盤級計算,進(jìn)行計算時,都需要從磁盤讀或者寫數(shù)據(jù),同時整個計算模型需要網(wǎng)絡(luò)傳輸,導(dǎo)致MapReduce具有高延遲的致命弱點(diǎn)。
據(jù)統(tǒng)計,基于Spark內(nèi)存的計算速度比Hadoop MapReduce快100倍以上,基于磁盤的計算速度也要快10倍以上。
2.開發(fā)難易度
Spark提供多語言(包括Scala、Java、Python)API,能夠快速實(shí)現(xiàn)應(yīng)用,相比MapReduce更簡潔的代碼,安裝部署也無需復(fù)雜配置。使用API可以輕松地構(gòu)建分布式應(yīng)用,同時也可以使用Scala和Python腳本進(jìn)行交互式編程。
3.兼容性
Spark提供了一個強(qiáng)大的技術(shù)棧,基于”One Stack to rule them all”的理念實(shí)現(xiàn)一體化、多元化的大數(shù)據(jù)處理平臺,輕松應(yīng)對大數(shù)據(jù)處理的查詢語言Spark SQL、機(jī)器學(xué)習(xí)工具M(jìn)Llib、圖計算工具GraphX、實(shí)時流處理工具Spark Streaming無縫連接。
Hadoop的技術(shù)棧則相對獨(dú)立復(fù)雜,各個框架都是獨(dú)立的系統(tǒng),給集成帶來了很大的復(fù)雜和不確定性。
4.相互集成性
Spark可以運(yùn)行在Hadoop集群管理Yarn上,這使得Spark可以讀取Hadoop的任何數(shù)據(jù)。同時它也能讀取HDFS、HBase、Hive、Cassandra以及任何Hadoop數(shù)據(jù)源。















 
 
 







 
 
 
 