更新時(shí)間:2020年12月17日11時(shí)42分 來(lái)源:傳智教育 瀏覽次數(shù):
MapReduce是一種編程模型,用于處理大規(guī)模數(shù)據(jù)集的并行運(yùn)算。使用MapReduce執(zhí)行計(jì)算任務(wù)的時(shí)候,每個(gè)任務(wù)的執(zhí)行過(guò)程都會(huì)被分為兩個(gè)階段,分別是Map和Reduce,其中Map階段用于對(duì)原始數(shù)據(jù)進(jìn)行處理,Reduce階段用于對(duì)Map階段的結(jié)果進(jìn)行匯總,得到最終結(jié)果,這兩個(gè)階段的模型如圖1所示。
? 圖1 MapReduce簡(jiǎn)易模型
MapReduce編程模型借鑒了函數(shù)式程序設(shè)計(jì)語(yǔ)言的設(shè)計(jì)思想,其程序?qū)崿F(xiàn)過(guò)程是通過(guò)map()和reduce()函數(shù)來(lái)完成的。從數(shù)據(jù)格式上來(lái)看,map()函數(shù)接收的數(shù)據(jù)格式是鍵值對(duì),產(chǎn)生的輸出結(jié)果也是鍵值對(duì)形式,reduce()函數(shù)會(huì)將map()函數(shù)輸出的鍵值對(duì)作為輸入,把相同key值的value進(jìn)行匯總,輸出新的鍵值對(duì)。接下來(lái),通過(guò)一張圖來(lái)描述MapReduce的簡(jiǎn)易數(shù)據(jù)流模型,具體如圖2所示。
圖2 MapReduce簡(jiǎn)易數(shù)據(jù)流模型
? 關(guān)于圖2描述的MapReduce簡(jiǎn)易數(shù)據(jù)流模型的相關(guān)說(shuō)明,具體如下:
? (1)將原始數(shù)據(jù)處理成鍵值對(duì)
? (2)將解析后的鍵值對(duì)
? (3)將中間形式的鍵值對(duì)
? 這里需要說(shuō)明的是,對(duì)于某些任務(wù)來(lái)說(shuō),可能不一定需要Reduce過(guò)程,也就是說(shuō),MapReduce的數(shù)據(jù)流模型可能只有Map過(guò)程,由Map產(chǎn)生的數(shù)據(jù)直接被寫(xiě)入HDFS中。但是,對(duì)于大多數(shù)任務(wù)來(lái)說(shuō),都是需要Reduce過(guò)程的,并且可能由于任務(wù)繁重,需要設(shè)定多個(gè)Reduce,例如,下面是一個(gè)具有多個(gè)Map和Reduce的MapReduce模型,具體如圖3所示。
圖3 多個(gè)Map和Reduce的MapReduce模型
圖3演示的是含有3個(gè)Map和2個(gè)Reduce的MapReduce程序,其中,由Map產(chǎn)生的相關(guān)key的輸出都會(huì)集中到Reduce中處理,而Reduce是最后的處理過(guò)程,其結(jié)果不會(huì)進(jìn)行第二次匯總。
猜你喜歡:
Linux系統(tǒng)安裝虛擬機(jī)的網(wǎng)絡(luò)配置方法
Linux系統(tǒng)安裝虛擬機(jī)的網(wǎng)絡(luò)配置方法
2020-12-02HDFS讀寫(xiě)流程介紹,HDFS讀數(shù)據(jù)和寫(xiě)數(shù)據(jù)的原理是什么?
2020-12-01MapReduce程序怎樣設(shè)置本地運(yùn)行模式?
2020-12-01Scala算術(shù)操作符重載怎樣使用?
2020-11-18大數(shù)據(jù)的兩種計(jì)算框架優(yōu)劣對(duì)比,哪個(gè)更適合開(kāi)發(fā)?
2020-11-18如何操作MapReduce的性能調(diào)優(yōu)?
2020-11-18北京校區(qū)