首頁技術(shù)文章正文

Hadoop與Spark的區(qū)別有哪些?【大數(shù)據(jù)培訓(xùn)】

更新時間:2020-04-24 來源:黑馬程序員 瀏覽量:

1577370495235_學(xué)IT就到黑馬程序員.gif



Hadoop與Spark都是大數(shù)據(jù)計算框架,但是兩者各有自己的優(yōu)勢,Spark與Hadoop的區(qū)別主要有以下幾點。推薦了解黑馬程序員大數(shù)據(jù)課程。

1、編程方式

Hadoop的MapReduce在計算數(shù)據(jù)時,計算過程必須要轉(zhuǎn)化為Map和Reduce兩個過程,從而難以描述復(fù)雜的數(shù)據(jù)處理過程;而Spark的計算模型不局限于Map和Reduce操作,還提供了多種數(shù)據(jù)集的操作類型,編程模型比MapReduce更加靈活。

2、數(shù)據(jù)存儲

Hadoop的 MapReduce進行計算時,每次產(chǎn)生的中間結(jié)果都是存儲在本地磁盤中;而

Spark在計算時產(chǎn)生的中間結(jié)果存儲在內(nèi)存中。

3、數(shù)據(jù)處理

Hadoop在每次執(zhí)行數(shù)據(jù)處理時,都需要從磁盤中加載數(shù)據(jù),導(dǎo)致磁盤的I/O開銷較大;而Spark在執(zhí)行數(shù)據(jù)處理時,只需要將數(shù)據(jù)加載到內(nèi)存中,之后直接在內(nèi)存中加載中間結(jié)果數(shù)據(jù)集即可,減少了磁盤的1O開銷。

4、數(shù)據(jù)容錯

MapReduce計算的中間結(jié)果數(shù)據(jù)保存在磁盤中,并且 Hadoop框架底層實現(xiàn)了備份機制,從而保證了數(shù)據(jù)容錯;同樣 Spark RDD實現(xiàn)了基于 Lineage的容錯機制和設(shè)置檢查點的容錯機制,彌補了數(shù)據(jù)在內(nèi)存處理時斷電丟失的問題。

在Spark與Hadoop的性能對比中,較為明顯的缺陷是Hadoop中的MapReduce計算延遲較高,無法勝任當下爆發(fā)式的數(shù)據(jù)增長所要求的實時、快速計算的需求。

1587715619137_Hadoop-MapReduce執(zhí)行流程.jpg


1587715629900_spark執(zhí)行流程.jpg


從上圖可以看出,使用Hadoop MapReduce進行計算時,每次計算產(chǎn)生的中間結(jié)果都需要從磁盤中讀取并寫入,大大增加了磁盤的I/O開銷,而使用Spark進行計算時,需要先將磁盤中的數(shù)據(jù)讀取到內(nèi)存中,產(chǎn)生的數(shù)據(jù)不再寫入磁盤,直接在內(nèi)存中迭代處理,這樣就避免了從磁盤中頻繁讀取數(shù)據(jù)造成的不必要開銷。通過官方計算測試,Hadoop與Spark執(zhí)行邏輯回歸所需的時間對比,如圖所示。

1587715683883_時間對比.jpg

從上圖可以看出,Hadoop與Spark執(zhí)行的所需時間相差超過100倍。

猜你喜歡

Spark計算框架在處理數(shù)據(jù)時有什么優(yōu)勢?


分享到:
在線咨詢 我要報名
和我們在線交談!