溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么進行Spark和MapReduce的對比

發(fā)布時間:2021-12-17 09:17:44 來源:億速云 閱讀:209 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了怎么進行Spark和MapReduce的對比,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

下面給大家介紹Spark和MapReduce,并且能夠在遇到諸如"MapReduce相對于Spark的局限性?"

首先  糾正一個誤區(qū)  :在瀏覽Spark官網(wǎng)時,經(jīng)常能看到如下這張圖:

怎么進行Spark和MapReduce的對比

從上圖可以看出Spark的運行速度明顯比Hadoop(其實是跟MapReduce計算引擎對比)快上百倍!相信很多人在初學Spark時,認為Spark比MapReduce快的第一直觀概念都是由此而來,甚至筆者發(fā)現(xiàn)網(wǎng)上有些資料更是直接照搬這個對比,給初學者造成一個很嚴重的誤區(qū)。
這張圖是分別使用Spark和Hadoop運行邏輯回歸機器學習算法的運行時間比較,那么能代表Spark運行任何類型的任務在相同的條件下都能得到這個對比結果嗎?很顯然是不對的,對于這個對比我們要知其然更要知其所以然。

首先,大多數(shù)機器學習算法的核心是什么?就是對同一份數(shù)據(jù)在訓練模型時,進行不斷的迭代、調參然后形成一個相對優(yōu)的模型。而Spark作為一個基于內存迭代式大數(shù)據(jù)計算引擎很適合這樣的場景,之前的文章《Spark RDD詳解》也有介紹,對于相同的數(shù)據(jù)集,我們是可以在第一次訪問它之后,將數(shù)據(jù)集加載到內存,后續(xù)的訪問直接從內存中取即可。但是MapReduce由于運行時中間結果必然刷磁盤等因素,導致不適合機器學習等的迭代場景應用,還有就是HDFS本身也有緩存功能,官方的對比極有可能在運行邏輯回歸時沒有很好配置該緩存功能,否則性能差距也不至于這么大。

相對于MapReduce,我們?yōu)槭裁催x擇Spark  ,筆者做了如下總結  :   
Spark   

1.集流批處理、交互式查詢、機器學習及圖計算等于一體

2.基于內存迭代式計算,適合低延遲、迭代運算類型作業(yè)

3.可以通過緩存共享rdd、DataFrame,提升效率【尤其是SparkSQL可以將數(shù)據(jù)以列式的形式存儲于內存中】

4.中間結果支持checkpoint,遇錯可快速恢復

5.支持DAG、map之間以pipeline方式運行,無需刷磁盤

6.多線程模型,每個worker節(jié)點運行一個或多個executor服務,每個task作為線程運行在executor中,task間可共享資源

7.Spark編程模型更靈活,支持多種語言如java、scala、python、R,并支持豐富的transformation和action的算子
MapReduce      

1.適合離線數(shù)據(jù)處理,不適合迭代計算、交互式處理、流式處理

2.中間結果需要落地,需要大量的磁盤IO和網(wǎng)絡IO影響性能

3.雖然MapReduce中間結果可以存儲于HDFS,利用HDFS緩存功能,但相對Spark緩存功能較低效

4.多進程模型,任務調度(頻繁申請、釋放資源)和啟動開銷大,不適合低延遲類型作業(yè)

5.MR編程不夠靈活,僅支持map和reduce兩種操作。當一個計算邏輯復雜的時候,需要寫多個MR任務運行【并且這些MR任務生成的結果在下一個MR任務使用時需要將數(shù)據(jù)持久化到磁盤才行,這就不可避免的進行遭遇大量磁盤IO影響效率】

雖然Spark相對于MapReduce有很多優(yōu)勢,但并不代表Spark目前可以完全取代MapReduce。

上述內容就是怎么進行Spark和MapReduce的對比,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI