Spark與MapReduce的區別是什麼?

2021-10-06 16:42:46 字數 990 閱讀 5183

spark和mapreduce都是可以處理海量資料,但是在處理方式和處理速度上存在著差異,總結如下:

1.spark處理資料是基於記憶體的,而mapreduce是基於磁碟處理資料的。

mapreduce是將中間結果儲存到磁碟中,減少了記憶體占用,犧牲了計算效能。

spark是將計算的中間結果儲存到記憶體中,可以反覆利用,提高了處理資料的效能。

2.spark在處理資料時構建了dag有向無環圖,減少了shuffle和資料落地磁碟的次數

spark 計算比 mapreduce 快的根本原因在於 dag 計算模型。一般而言,dag 相比mapreduce 在大多數情況下可以減少 shuffle 次數。spark 的 dagscheduler 相當於乙個改進版的 mapreduce,如果計算不涉及與其他節點進行資料交換,spark 可以在記憶體中一次性完成這些操作,也就是中間結果無須落盤,減少了磁碟 io 的操作。但是,如果計算過程中涉及資料交換,spark 也是會把 shuffle 的資料寫磁碟的!有乙個誤區,spark 是基於記憶體的計算,所以快,這不是主要原因,要對資料做計算,必然得載入到記憶體,hadoop 也是如此,只不過 spark 支援將需要反覆用到的資料給 cache 到記憶體中,減少資料載入耗時,所以 spark 跑機器學習演算法比較在行(需要對資料進行反覆迭代)

3.spark是粗粒度資源申請,而mapreduce是細粒度資源申請

粗粒度申請資源指的是在提交資源時,spark會提前向資源管理器(yarn,mess)將資源申請完畢,如果申請不到資源就等待,如果申請到就執行task任務,而不需要task再去申請資源。

mapreduce是細粒度申請資源,提交任務,task自己申請資源自己執行程式,自己釋放資源,雖然資源能夠充分利用,但是這樣任務執行的很慢。

Spark與MapReduce的區別

spark中最核心的概念是rdd 彈性分布式資料集 近年來,隨著資料量的不斷增長,分布式集群平行計算 如mapreduce dryad等 被廣泛運用於處理日益增長的資料。這些設計優秀的計算模型大都具有容錯性好 可擴充套件性強 負載平衡 程式設計方法簡單等優點,從而使得它們受到眾多企業的青睞,被大多數...

MapReduce與Spark的異同

spark是借鑑了mapreduce並在其基礎之上發展起來的,繼承了分布式計算的優點並改進了mapreduce的劣勢 1.spark把運算的中間資料存放在記憶體,迭代計算效率更高,spark中除了基於記憶體計算外,還有執行任務的dag有向無環圖 mapreduce的中間結果需要儲存到磁碟,這樣必然會...

Spark與MapReduce的對比誤區與真正優勢

3.spark相比mapreduce可以減少磁碟io嗎?spark比mapreduce快在哪?經常聽到有人說spark基於記憶體計算,將中間結果儲存在記憶體中,避免了磁碟io的次數。我覺得這句話的表面意思都對,但是很多人並沒有了解其真正的含義。知乎 什麼是記憶體計算,如果是指把磁碟中的資料讀取到記憶...