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

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

更新時間:2021-01-26 來源:黑馬程序員 瀏覽量:

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

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

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

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

ReduceTask的工作機(jī)制

具體步驟如下:

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

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

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




猜你喜歡:

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

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

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

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

分享到:
在線咨詢 我要報名
和我們在線交談!