更新時(shí)間:2020-04-24 來源:黑馬程序員 瀏覽量:
Hadoop與Spark都是大數(shù)據(jù)計(jì)算框架,但是兩者各有自己的優(yōu)勢(shì),Spark與Hadoop的區(qū)別主要有以下幾點(diǎn)。推薦了解黑馬程序員大數(shù)據(jù)課程。
1、編程方式
Hadoop的MapReduce在計(jì)算數(shù)據(jù)時(shí),計(jì)算過程必須要轉(zhuǎn)化為Map和Reduce兩個(gè)過程,從而難以描述復(fù)雜的數(shù)據(jù)處理過程;而Spark的計(jì)算模型不局限于Map和Reduce操作,還提供了多種數(shù)據(jù)集的操作類型,編程模型比MapReduce更加靈活。
2、數(shù)據(jù)存儲(chǔ)
Hadoop的 MapReduce進(jìn)行計(jì)算時(shí),每次產(chǎn)生的中間結(jié)果都是存儲(chǔ)在本地磁盤中;而
Spark在計(jì)算時(shí)產(chǎn)生的中間結(jié)果存儲(chǔ)在內(nèi)存中。
3、數(shù)據(jù)處理
Hadoop在每次執(zhí)行數(shù)據(jù)處理時(shí),都需要從磁盤中加載數(shù)據(jù),導(dǎo)致磁盤的I/O開銷較大;而Spark在執(zhí)行數(shù)據(jù)處理時(shí),只需要將數(shù)據(jù)加載到內(nèi)存中,之后直接在內(nèi)存中加載中間結(jié)果數(shù)據(jù)集即可,減少了磁盤的1O開銷。
4、數(shù)據(jù)容錯(cuò)
MapReduce計(jì)算的中間結(jié)果數(shù)據(jù)保存在磁盤中,并且 Hadoop框架底層實(shí)現(xiàn)了備份機(jī)制,從而保證了數(shù)據(jù)容錯(cuò);同樣 Spark RDD實(shí)現(xiàn)了基于 Lineage的容錯(cuò)機(jī)制和設(shè)置檢查點(diǎn)的容錯(cuò)機(jī)制,彌補(bǔ)了數(shù)據(jù)在內(nèi)存處理時(shí)斷電丟失的問題。
在Spark與Hadoop的性能對(duì)比中,較為明顯的缺陷是Hadoop中的MapReduce計(jì)算延遲較高,無法勝任當(dāng)下爆發(fā)式的數(shù)據(jù)增長(zhǎng)所要求的實(shí)時(shí)、快速計(jì)算的需求。
從上圖可以看出,使用Hadoop
MapReduce進(jìn)行計(jì)算時(shí),每次計(jì)算產(chǎn)生的中間結(jié)果都需要從磁盤中讀取并寫入,大大增加了磁盤的I/O開銷,而使用Spark進(jìn)行計(jì)算時(shí),需要先將磁盤中的數(shù)據(jù)讀取到內(nèi)存中,產(chǎn)生的數(shù)據(jù)不再寫入磁盤,直接在內(nèi)存中迭代處理,這樣就避免了從磁盤中頻繁讀取數(shù)據(jù)造成的不必要開銷。通過官方計(jì)算測(cè)試,Hadoop與Spark執(zhí)行邏輯回歸所需的時(shí)間對(duì)比,如圖所示。
從上圖可以看出,Hadoop與Spark執(zhí)行的所需時(shí)間相差超過100倍。
猜你喜歡
Spark計(jì)算框架在處理數(shù)據(jù)時(shí)有什么優(yōu)勢(shì)?
Spark計(jì)算框架在處理數(shù)據(jù)時(shí)有什么優(yōu)勢(shì)?【大數(shù)據(jù)培訓(xùn)】
2020-04-24Spark發(fā)展史:讓你了解是什么Spark?
2020-04-23機(jī)器學(xué)習(xí)可以應(yīng)用于哪些領(lǐng)域?【大數(shù)據(jù)培訓(xùn)】
2020-04-23什么是機(jī)器學(xué)習(xí)?【大數(shù)據(jù)培訓(xùn)】
2020-04-23大數(shù)據(jù)培訓(xùn)之?dāng)?shù)據(jù)可視化教程
2020-03-22大數(shù)據(jù)工程師培訓(xùn)課程有哪些內(nèi)容?[黑馬程序員]
2019-12-18