spark shuffle內在原理說明

2021-08-04 22:13:32 字數 686 閱讀 4624

在mapreduce框架中,shuffle是連線map和reduce之間的橋梁,map的輸出要用到reduce中必須經過shuffle這個環節,shuffle的效能高低直接影響了整個程式的效能和吞吐量。spark作為mapreduce框架的一種實現,自然也實現了shuffle的邏輯。

shuffle是mapreduce框架中的乙個特定的phase,介於map phase和reduce phase之間,當map的輸出結果要被reduce使用時,輸出結果需要按key雜湊,並且分發到每乙個reducer上去,這個過程就是shuffle。由於shuffle涉及到了磁碟的讀寫和網路的傳輸,因此shuffle效能的高低直接影響到了整個程式的執行效率。

下面這幅圖清晰地描述了mapreduce演算法的整個流程,其中shuffle phase是介於map phase和reduce phase之間。

概念上shuffle就是乙個溝通資料連線的橋梁,那麼實際上shuffle(partition)這一部分是如何實現的的呢,下面我們就以spark為例講一下shuffle在spark中的實現。

先以圖為例簡單描述一下spark中shuffle的整乙個流程:

m×rm×r,其中

mm是map的個數,

rr是reduce的個數。

這裡的bucket是乙個抽象概念,在實現中每個bucket可以對應乙個檔案,可以對應檔案的一部分或是其他等。

參考:

spark shuffle內在原理說明

在mapreduce框架中,shuffle是連線map和reduce之間的橋梁,map的輸出要用到reduce中必須經過shuffle這個環節,shuffle的效能高低直接影響了整個程式的效能和吞吐量。spark作為mapreduce框架的一種實現,自然也實現了shuffle的邏輯。shuffle是...

Spark Shuffle記憶體分析

分布式系統裡的shuffle 階段往往是非常複雜的,而且分支條件也多,我只能按著我關注的線去描述。肯定會有不少謬誤之處,我會根據自己理解的深入,不斷更新這篇文章。前言用spark寫程式,乙個比較蛋疼的地方就是oom,或者gc嚴重,導致程式響應緩慢,一般這種情況都會出現在shuffle階段。shuff...

Spark shuffle流程細則

hadoop中的shuffle存在map任務和reduce任務之間,而spark中的shuffle過程存在stage之間。shuffle操作分為兩種,分別是寫操作和讀操作。基於排序的shuffle操作 基於雜湊的shuffle操作會產生很多檔案,這對檔案系統來說是乙個非誠大的負擔,而且在總資料量不大...