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

全國(guó)咨詢/投訴熱線:400-618-4000

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

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

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

shuffle是Mapreduce的核心,它分布在Mapreduce的map階段和reduce階段。一般把從Map產(chǎn)生輸出開(kāi)始到Reduce取得數(shù)據(jù)作為輸入之前的過(guò)程稱作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í)候,就會(huì)將數(shù)據(jù)寫(xiě)入本地磁盤(pán),在將數(shù)據(jù)寫(xiě)入磁盤(pán)之前需要對(duì)數(shù)據(jù)進(jìn)行一次排序的操作,如果配置了combiner,還會(huì)將有相同分區(qū)號(hào)和key的數(shù)據(jù)進(jìn)行排序。

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

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

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

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

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





猜你喜歡:

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

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

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

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

0 分享到:
和我們?cè)诰€交談!