更新時間:2022年05月26日10時15分 來源:傳智教育 瀏覽次數:
今天的Python大數據培訓課程我們講一下MapTask工作原理,MapTask作為MapReduce工作流程的前半部分,它主要經歷了5個階段,分別是Read階段、Map階段、Collect階段、Spill階段和Combine階段,如圖4-7所示。
圖4-7MapTask工作原理
關于MapTask這5個階段的相關介紹如下:
?。?)Read階段:MapTask通過用戶編寫的RecordReader,從輸入的InputSplit中解析出一個個key/value。
(2)Map階段:將解析出的key/value交給用戶編寫的map()函數處理,并產生一系列新的key/value。
?。?)Collect階段:在用戶編寫的map()函數中,數據處理完成后,一般會調用outputCollector.collect()輸出結果,在該函數內部,它會將生成的key/value分片(通過調用partitioner),并寫入一個環(huán)形內存緩沖區(qū)中。
?。?)Spill階段:即“溢寫”,當環(huán)形緩沖區(qū)滿后,MapReduce會將數據寫到本地磁盤上,生成一個臨時文件。需要注意的是,將數據寫入本地磁盤前,先要對數據進行一次本地排序,并在必要時對數據進行合并、壓縮等操作。
(5)Combine階段:當所有數據處理完成以后,MapTask會對所有臨時文件進行一次合并,以確保最終只會生成一個數據文件。