首頁技術文章正文

MapReduce的工作流程是怎樣的?

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

1577370495235_學IT就到黑馬程序員.gif


MapReduce編程模型開發(fā)簡單且功能強大,專門為并行處理大規(guī)模數據量而設計,接下來,我們通過一張圖來描述MapReduce的工作過程,如圖1所示。

MapReduce工作過程

圖1 MapReduce工作過程

在圖1中,MapReduce的工作流程大致可以分為5步,具體如下:

1.分片、格式化數據源

輸入Map階段的數據源,必須經過分片和格式化操作。其中:

分片操作:指的是將源文件劃分為大小相等的小數據塊(Hadoop2.x中默認128M),也就是分片(split),Hadoop會為每一個分片構建一個Map任務,并由該任務運行自定義的map()函數,從而處理分片里的每一條記錄;格式化操作:將劃分好的分片(split)格式化為鍵值對<key,value>形式的數據,其中,key代表偏移量,value代表每一行內容。

2.執(zhí)行MapTask

每個Map任務都有一個內存緩沖區(qū)(緩沖區(qū)大小100M),輸入的分片(split)數據經過Map任務處理后的中間結果,會寫入內存緩沖區(qū)中。如果寫入的數據達到內存緩沖的閥值(80M),會啟動一個線程將內存中的溢出數據寫入磁盤,同時不影響map中間結果繼續(xù)寫入緩沖區(qū)。在溢寫過程中,MapReduce框架會對Key進行排序,如果中間結果比較大,會形成多個溢寫文件,最后的緩沖區(qū)數據也會全部溢寫入磁盤形成一個溢寫文件,如果是多個溢寫文件,則最后合并所有的溢寫文件為一個文件。

3.執(zhí)行Shuffle過程

MapReduce工作過程中,map階段處理的數據如何傳遞給Reduce階段,這是MapReduce框架中關鍵的一個過程,這個過程叫做Shuffle。Shuffle會將MapTask輸出的處理結果數據,分發(fā)給ReduceTask,并在分發(fā)的過程中,對數據按key進行分區(qū)和排序。

4.執(zhí)行ReduceTask

輸入ReduceTask的數據流是<key,{value list}>形式,用戶可以自定義reduce()方法進行邏輯處理,最終以<key,value>的形式輸出。

5.寫入文件

MapReduce框架會自動把ReduceTask生成的<key,value>傳入OutputFormat的write方法,實現文件的寫入操作。




猜你喜歡:

MapReduce程序如何設置本地運行模式?

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

MapReduce是怎樣進行計算的?    

黑馬程序員大數據高級軟件工程師培訓

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