MapReduce执行过程
生活随笔
收集整理的這篇文章主要介紹了
MapReduce执行过程
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Mapper任務(wù)的執(zhí)行過程:
- 第一階段是把輸入文件按照一定的標(biāo)準(zhǔn)分片(InputSplit),每個(gè)輸入片的大小是固定的。默認(rèn)情況下,輸入片(InputSplit)的大小與數(shù)據(jù)塊(Block)的大小是相同的。如果數(shù)據(jù)塊(Block)的大小是默認(rèn)值64MB,輸入文件有兩個(gè),一個(gè)是32MB,一個(gè)是72MB。那么小的文件是一個(gè)輸入片,大文件會(huì)分為兩個(gè)數(shù)據(jù)塊,那么是兩個(gè)輸入片。一共產(chǎn)生三個(gè)輸入片。每一個(gè)輸入片由一個(gè)Mapper進(jìn)程處理。這里的三個(gè)輸入片,會(huì)有三個(gè)Mapper進(jìn)程處理。
- 第二階段是對(duì)輸入片中的記錄按照一定的規(guī)則解析成鍵值對(duì)。有個(gè)默認(rèn)規(guī)則是把每一行文本內(nèi)容解析成鍵值對(duì)。“鍵”是每一行的起始位置(單位是字節(jié)),“值”是本行的文本內(nèi)容。
- 第三階段是調(diào)用Mapper類中的map方法。第二階段中解析出來的每一個(gè)鍵值對(duì),調(diào)用一次map方法。如果有1000個(gè)鍵值對(duì),就會(huì)調(diào)用1000次map方法。每一次調(diào)用map方法會(huì)輸出零個(gè)或者多個(gè)鍵值對(duì)。
- 第四階段是按照一定的規(guī)則對(duì)第三階段輸出的鍵值對(duì)進(jìn)行分區(qū)。比較是基于鍵進(jìn)行的。比如我們的鍵表示省份(如北京、上海、山東等),那么就可以按照不同省份進(jìn)行分區(qū),同一個(gè)省份的鍵值對(duì)劃分到一個(gè)區(qū)中。默認(rèn)是只有一個(gè)區(qū)。分區(qū)的數(shù)量就是Reducer任務(wù)運(yùn)行的數(shù)量。默認(rèn)只有一個(gè)Reducer任務(wù)。
- 第五階段是對(duì)每個(gè)分區(qū)中的鍵值對(duì)進(jìn)行排序。首先,按照鍵進(jìn)行排序,對(duì)于鍵相同的鍵值對(duì),按照值進(jìn)行排序。比如三個(gè)鍵值對(duì)<2,2>、<1,3>、<2,1>,鍵和值分別是整數(shù)。那么排序后的結(jié)果是<1,3>、<2,1>、<2,2>。如果有第六階段,那么進(jìn)入第六階段;如果沒有,直接輸出到本地的linux文件中。
- 第六階段是對(duì)數(shù)據(jù)進(jìn)行歸約處理,也就是reduce處理。鍵相等的鍵值對(duì)會(huì)調(diào)用一次reduce方法。經(jīng)過這一階段,數(shù)據(jù)量會(huì)減少。歸約后的數(shù)據(jù)輸出到本地的linxu文件中。本階段默認(rèn)是沒有的,需要用戶自己增加這一階段的代碼。
Reducer任務(wù)的執(zhí)行過程
- 第一階段是Reducer任務(wù)會(huì)主動(dòng)從Mapper任務(wù)復(fù)制其輸出的鍵值對(duì)。Mapper任務(wù)可能會(huì)有很多,因此Reducer會(huì)復(fù)制多個(gè)Mapper的輸出。
- 第二階段是把復(fù)制到Reducer本地?cái)?shù)據(jù),全部進(jìn)行合并,即把分散的數(shù)據(jù)合并成一個(gè)大的數(shù)據(jù)。再對(duì)合并后的數(shù)據(jù)排序。
- 第三階段是對(duì)排序后的鍵值對(duì)調(diào)用reduce方法。鍵相等的鍵值對(duì)調(diào)用一次reduce方法,每次調(diào)用會(huì)產(chǎn)生零個(gè)或者多個(gè)鍵值對(duì)。最后把這些輸出的鍵值對(duì)寫入到HDFS文件中。
-
在整個(gè)MapReduce程序的開發(fā)過程中,最大的工作量是覆蓋map函數(shù)和覆蓋reduce函數(shù)。
----------------------------------------------------------------------------
map
? ? ?1.讀取輸入文件,解析成<k,v>,每個(gè)<k,v>調(diào)用一次map
? ? ?2.map()
? ? ?3.分區(qū)(默認(rèn)1)
? ? ?4.排序、分組(shuffle)
? ? ?5.規(guī)約(combine可選)
reduce
1.網(wǎng)絡(luò)copy
? ? ? 2.reduce()(先排序)
3.輸出
轉(zhuǎn)載于:https://www.cnblogs.com/mlj5288/p/4449716.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的MapReduce执行过程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 整理记录个人面试问题
- 下一篇: js 乘法除法精度问题