首頁技術文章正文

簡述MapTask工作原理

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

MapTask作為MapReduce工作流程的前半部分,它主要經(jīng)歷了5個階段,分別是Read階段、Map階段、Collect階段、Spill階段和Combine階段,如下圖所示。

1638779143474_MapTask工作原理.jpg

關于MapTask這5個階段的相關介紹如下:

(1) Read階段: MapTask通過用戶編寫的RecordReader,從輸人的InputSplit中解析出一個個key/value。

(2) Map階段:將解析出的key/value交給用戶編寫的map()函數(shù)處理,并產(chǎn)生一系列新的key/value。

(3) Collect階段:在用戶編寫的map()函數(shù)中,數(shù)據(jù)處理完成后,一般會調用outputCollector.collct()輸出結果,在該麗數(shù)內部,它會將生成的key/value分片(通過調用partitioner),并寫入一個環(huán)形內存緩沖區(qū)中。

(4) Spill階段:即“溢寫”,當環(huán)形緩沖區(qū)滿后,MapReduce會將數(shù)據(jù)寫到本地磁盤上,生成一個臨時文件。需要注意的是,將數(shù)據(jù)寫人本地磁盤前,先要對數(shù)據(jù)進行一次本地排序,并在必要時對數(shù)據(jù)進行合并、壓縮等操作。

(5) Combine階段:當所有數(shù)據(jù)處理完成以后,MapTask會對所有臨時文件進行一次合并,以確保最終只會生成一個數(shù)據(jù)文件。



猜你喜歡:

MapReduce編程開發(fā)實例——詞頻統(tǒng)計過程

MapReduce的工作流程是怎樣的?

MapReduce中Maper組件用法介紹

黑馬程序員python+大數(shù)據(jù)培訓課程

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