教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

Shuffle是什么?有哪些工作流程

更新時間:2021年07月20日16時20分 來源:傳智教育 瀏覽次數(shù):

map階段處理的數(shù)據(jù)如何傳遞給reduce階段,是MapReduce框架中關(guān)鍵的一個流程,這個流程就叫shuffle。
shuffle: 洗牌、發(fā)牌--(核心機(jī)制:數(shù)據(jù)分區(qū),排序,合并)。

shuffle是Mapreduce的核心,它分布在Mapreduce的map階段和reduce階段。一般把從Map產(chǎn)生輸出開始到Reduce取得數(shù)據(jù)作為輸入之前的過程稱作shuffle。

1.Collect階段:將MapTask的結(jié)果輸出到默認(rèn)大小為100M的環(huán)形緩沖區(qū),保存的是key/value,Partition分區(qū)信息等。

2.Spill階段:當(dāng)內(nèi)存中的數(shù)據(jù)量達(dá)到一定的閥值的時候,就會將數(shù)據(jù)寫入本地磁盤,在將數(shù)據(jù)寫入磁盤之前需要對數(shù)據(jù)進(jìn)行一次排序的操作,如果配置了combiner,還會將有相同分區(qū)號和key的數(shù)據(jù)進(jìn)行排序。

3.Merge階段:把所有溢出的臨時文件進(jìn)行一次合并操作,以確保一個MapTask終只產(chǎn)生一個中間數(shù)據(jù)文件。

4.Copy階段: ReduceTask啟動Fetcher線程到已經(jīng)完成MapTask的節(jié)點(diǎn)上復(fù)制一份屬于自己的數(shù)據(jù),這些數(shù)據(jù)默認(rèn)會保存在內(nèi)存的緩沖區(qū)中,當(dāng)內(nèi)存的緩沖區(qū)達(dá)到一定的閥值的時候,就會將數(shù)據(jù)寫到磁盤之上。

5.0Merge階段:在ReduceTask遠(yuǎn)程復(fù)制數(shù)據(jù)的同時,會在后臺開啟兩個線程對內(nèi)存到本地的數(shù)據(jù)文件進(jìn)行合并操作。

6.Sort階段:在對數(shù)據(jù)進(jìn)行合并的同時,會進(jìn)行排序操作,由于MapTask階段已經(jīng)對數(shù)據(jù)進(jìn)行了局部的排序,ReduceTask只需保證Copy的數(shù)據(jù)的 終整體有效性即可。

Shuffle中的緩沖區(qū)大小會影響到mapreduce程序的執(zhí)行效率,原則上說,緩沖區(qū)越大,磁盤io的次數(shù)越少,執(zhí)行速度就越快。緩沖區(qū)的大小可以通過參數(shù)調(diào)整, 參數(shù):io.sort.mb 默認(rèn)100M





猜你喜歡:

MapReduce編程原理介紹[MapReduce開發(fā)必讀]

MapReduce程序在本地運(yùn)行的模式怎樣設(shè)置?

簡單舉例,MapReduce是如何進(jìn)行計(jì)算的

傳智教育python+大數(shù)據(jù)開發(fā)高手班

0 分享到:
和我們在線交談!