首頁(yè)技術(shù)文章正文

ReduceTask工作機(jī)制的操作步驟

更新時(shí)間:2021-01-26 來(lái)源:黑馬程序員 瀏覽量:

1577370495235_學(xué)IT就到黑馬程序員.gif

Reduce大致分為copy、sort、reduce三個(gè)階段,重點(diǎn)在前兩個(gè)階段。

copy階段包含一個(gè)eventFetcher來(lái)獲取已完成的map列表,由Fetcher線程去copy數(shù)據(jù),在此過(guò)程中會(huì)啟動(dòng)兩個(gè)merge線程,分別為 inMemoryMerger和onDiskMerger,分別將內(nèi)存中的數(shù)據(jù)merge到磁盤(pán)和將磁盤(pán)中的數(shù)據(jù)進(jìn)行merge。待數(shù)據(jù)copy完成之后,copy階段就完成了,開(kāi)始進(jìn)行sort階段。

sort階段主要是執(zhí)行finalMerge操作,純粹的 sort階段,完成之后就是reduce階段,調(diào)用用戶定義的reduce函數(shù)進(jìn)行處理。

ReduceTask的工作機(jī)制

具體步驟如下:

Copy階段,簡(jiǎn)單地拉取數(shù)據(jù)。Reduce進(jìn)程啟動(dòng)一些數(shù)據(jù)copy線程(Fetcher),通過(guò)HTTP方式請(qǐng)求maptask 獲取屬于自己的文件。Merge階段。這里的merge如map端的merge動(dòng)作,只是數(shù)組中存放的是不同map端copy來(lái)的數(shù)值。Copy過(guò)來(lái)的數(shù)據(jù)會(huì)先放入內(nèi)存緩沖區(qū)中,這里的緩沖區(qū)大小要比map端的更為靈活。merge有三種形式:內(nèi)存到內(nèi)存;內(nèi)存到磁盤(pán);磁盤(pán)到磁盤(pán)。默認(rèn)情況下第一種形式不啟用。當(dāng)內(nèi)存中的數(shù)據(jù)量到達(dá)一定閾值,就啟動(dòng)內(nèi)存到磁盤(pán)的merge。與map 端類似,這也是溢寫(xiě)的過(guò)程,這個(gè)過(guò)程中如果你設(shè)置有Combiner,也是會(huì)啟用的,然后在磁盤(pán)中生成了眾多的溢寫(xiě)文件。第二種merge方式一直在運(yùn)行,直到?jīng)]有map端的數(shù)據(jù)時(shí)才結(jié)束,然后啟動(dòng)第三種磁盤(pán)到磁盤(pán)的merge方式生成最終的文件。

把分散的數(shù)據(jù)合并成一個(gè)大的數(shù)據(jù)后,還會(huì)再對(duì)合并后的數(shù)據(jù)排序。

對(duì)排序后的鍵值對(duì)調(diào)用reduce方法,鍵相等的鍵值對(duì)調(diào)用一次reduce方法,每次調(diào)用會(huì)產(chǎn)生零個(gè)或者多個(gè)鍵值對(duì), 后把這些輸出的鍵值對(duì)寫(xiě)入到HDFS文件中。




猜你喜歡:

詳解MapReduce編程的Map模型和Reduce模型

MapReduce中Maper組件用法介紹【黑馬程序員】

Redis、傳統(tǒng)數(shù)據(jù)庫(kù)、HBase和Hive幾種數(shù)據(jù)存儲(chǔ)的區(qū)別

黑馬程序員大數(shù)據(jù)開(kāi)發(fā)培訓(xùn)

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!