Spark與MapReduce的對比(區別)

ZeroXu0發表於2020-09-30

提示:文章寫完後,目錄可以自動生成,如何生成可參考右邊的幫助文件

從以下幾個方面來對比下spark與MapReduce


一、架構

Spark採用的是經典的scheduler/workers模式, 每個Spark應用程式執行的第一步是構建一個可重用的資源池,然後在這個資源池裡執行所有的ShuffleMapTask和ReduceTask
MapReduce採用了多程式模型,而Spark採用了多執行緒模型。多程式模型便於細粒度控制每個任務佔用的資源,但會消耗較多的啟動時間,不適合執行低延遲型別的作業,這是MapReduce廣為詬病的原因之一。而多執行緒模型則相反,該模型使得Spark很適合執行低延遲型別的作業。

二、速度

spark把中間計算結果存放在記憶體中,減少迭代過程中的資料落地,能夠實現資料高效共享,迭代運算效率高;當然也有部分計算基於磁碟,比如Shuffle,但是其大量Transformation操作,比如單純的map或者filter等操作可以直接基於記憶體進行pipeline操作。
mapreduce中的計算中間結果是儲存在磁碟上的,產生了大量的I/O操作,效率很低。

三、容錯

spark容錯性高,因為支援DAG(有向無環圖)圖的分散式,也叫spark有血緣機制,在計算過程中如果出現問題造成資料丟失,系統不用重新計算,只需要根據血緣關係找到最近的中間過程資料進行計算,而且基於記憶體的中間資料儲存增加了再次使用的讀取的速度

補充:spark引進rdd彈性分散式資料集的概念,它是分佈在一組節點中的只讀物件集合,如果資料集一部分資料丟失,則可以根據血統來對它們進行重建;另外在RDD計算時可以通過checkpoint來實現容錯,checkpoint有兩種方式,即checkpiont data 和logging the updates。

四、功能

hadoop只提供了map和reduce兩種操作,spark提供的操作型別有很多,大致分為轉換和行動操作兩大類。轉換操作包括:map,filter,flatmap,sample,groupbykey,reducebykey,union,join,cogroup,mapvalues,sort,partitionby等多種操作,行動操作包括:collect,reduce,lookup和save等操作。
另外,Spark提供了Spark RDD、Spark SQL、Spark Streaming、Spark MLlib、Spark GraphX等技術元件,可以一站式地完成大資料領域的離線批處理、互動式查詢、流式計算、機器學習、圖計算等常見的任務,所以具有超強的通用性。

相關文章