官术网_书友最值得收藏!

7.1 概述

在MapReduce框架中,Shuffle階段是連接Map和Reduce之間的橋梁,Map階段通過Shuffle過程將數據輸出到Reduce階段中。由于Shuffle涉及磁盤的讀寫和網絡I/O,因此Shuffle性能的高低直接影響整個程序的性能。Spark本質上也是一種MapReduce框架,因此也會有自己的Shuffle過程實現。

在學習Shuffle的過程中,通常都會引用HadoopMapReduce框架中的Shuffle過程作為入門或比較,同時也會引用在Hadoop MapReduce框架中的Shuffle過程中常用的術語。下面是網絡上描述該過程的經典的框架圖,如圖7-1所示。

圖7-1 Hadoop MapReduce框架中的Shuffle框架

其中,Shuffle是MapReduce框架中的一個特定的階段,介于Map階段和Reduce階段之間。Map階段負責準備數據,Reduce階段則讀取Map階段準備的數據,然后進一步對數據進行處理,即Map階段實現Shuffle過程中的數據持久化(即數據寫),而Reduce階段實現Shuffle過程中的數據讀取。

在圖7-1中,Mapper端與Reduce端之間的數據交互通常都伴隨著一定的網絡I/O,因此對應數據的序列化與壓縮等技術也是Shuffle中必不可少的一部分。可以根據特定場景選取合適的序列化方式與壓縮算法進行調優,在此僅給出相關的配置屬性的簡單描述,具體見表7-1所示。

表7-1 Shuffle序列化方式與壓縮算法的配置屬性

可以基于圖7-1,抽象地去理解Shuffle階段的實現過程,但在具體實現上,不同的Shuffle設計會有不同的實現細節。

主站蜘蛛池模板: 太仆寺旗| 乐安县| 左云县| 渭南市| 中牟县| 旅游| 莱阳市| 马关县| 蓬安县| 息烽县| 徐闻县| 桂阳县| 平湖市| 体育| 伊川县| 兰坪| 罗田县| 芦溪县| 容城县| 龙口市| 仁寿县| 淄博市| 临潭县| 藁城市| 科技| 介休市| 禹城市| 宿州市| 延川县| 杨浦区| 凭祥市| 乌拉特后旗| 乌拉特中旗| 庆城县| 报价| 虹口区| 喀什市| 读书| 陵水| 九龙城区| 乌拉特后旗|