新聞中心
Hadoop的MapReduce shuffle過程,非常重要。只有熟悉整個(gè)過程才能對(duì)業(yè)務(wù)了如指掌。
MapReduce執(zhí)行流程
輸入和拆分:
不屬于map和reduce的主要過程,但屬于整個(gè)計(jì)算框架消耗時(shí)間的一部分,該部分會(huì)為正式的map準(zhǔn)備數(shù)據(jù)。
分片(split)操作:
split只是將源文件的內(nèi)容分片形成一系列的 InputSplit,每個(gè) InputSpilt 中存儲(chǔ)著對(duì) 應(yīng)分片的數(shù)據(jù)信息(例如,文件塊信息、起始位置、數(shù)據(jù)長(zhǎng)度、所在節(jié)點(diǎn)列表…),并不是將源文件分割成多個(gè)小文件,每個(gè)InputSplit 都由一個(gè) mapper 進(jìn)行后續(xù)處理。
每個(gè)分片大小參數(shù)是很重要的,splitSize 是組成分片規(guī)則很重要的一個(gè)參數(shù),該參數(shù)由三個(gè)值來確定:
minSize:splitSize 的最小值,由 mapred-site.xml 配置文件中 mapred.min.split.size 參數(shù)確定。
maxSize:splitSize 的大值,由 mapred-site.xml 配置文件中mapreduce.jobtracker.split.metainfo.maxsize 參數(shù)確定。
blockSize:HDFS 中文件存儲(chǔ)的快大小,由 hdfs-site.xml 配置文件中 dfs.block.size 參數(shù)確定。
splitSize的確定規(guī)則:splitSize=max{minSize,min{maxSize,blockSize}}
數(shù)據(jù)格式化(Format)操作:
將劃分好的 InputSplit 格式化成鍵值對(duì)形式的數(shù)據(jù)。其中 key 為偏移量,value 是每一行的內(nèi)容。
值得注意的是,在map任務(wù)執(zhí)行過程中,會(huì)不停的執(zhí)行數(shù)據(jù)格式化操作,每生成一個(gè)鍵值對(duì)就會(huì)將其傳入 map,進(jìn)行處理。所以map和數(shù)據(jù)格式化操作并不存在前后時(shí)間差,而是同時(shí)進(jìn)行的。
2)Map 映射:
是 Hadoop 并行性質(zhì)發(fā)揮的地方。根據(jù)用戶指定的map過程,MapReduce 嘗試在數(shù)據(jù)所在機(jī)器上執(zhí)行該 map 程序。在 HDFS中,文件數(shù)據(jù)是被復(fù)制多份的,所以計(jì)算將會(huì)選擇擁有此數(shù)據(jù)的最空閑的節(jié)點(diǎn)。
在這一部分,map內(nèi)部具體實(shí)現(xiàn)過程,可以由用戶自定義。
3)Shuffle 派發(fā):
Shuffle 過程是指Mapper 產(chǎn)生的直接輸出結(jié)果,經(jīng)過一系列的處理,成為最終的 Reducer 直接輸入數(shù)據(jù)為止的整個(gè)過程。這是mapreduce的核心過程。該過程可以分為兩個(gè)階段:
Mapper 端的Shuffle:由 Mapper 產(chǎn)生的結(jié)果并不會(huì)直接寫入到磁盤中,而是先存儲(chǔ)在內(nèi)存中,當(dāng)內(nèi)存中的數(shù)據(jù)量達(dá)到設(shè)定的閥值時(shí),一次性寫入到本地磁盤中。并同時(shí)進(jìn)行 sort(排序)、combine(合并)、partition(分片)等操作。其中,sort 是把 Mapper 產(chǎn) 生的結(jié)果按照 key 值進(jìn)行排序;combine 是把key值相同的記錄進(jìn)行合并;partition 是把 數(shù)據(jù)均衡的分配給 Reducer。
Reducer 端的 Shuffle:由于Mapper和Reducer往往不在同一個(gè)節(jié)點(diǎn)上運(yùn)行,所以 Reducer 需要從多個(gè)節(jié)點(diǎn)上下載Mapper的結(jié)果數(shù)據(jù),并對(duì)這些數(shù)據(jù)進(jìn)行處理,然后才能被 Reducer處理。
4)Reduce 縮減:
Reducer 接收形式的數(shù)據(jù)流,形成形式的輸出,具體的過程可以由用戶自定義,最終結(jié)果直接寫入hdfs。每個(gè)reduce進(jìn)程會(huì)對(duì)應(yīng)一個(gè)輸出文件,名稱以part-開頭。
歡迎補(bǔ)充。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)標(biāo)題:Hadoop的MapReduce執(zhí)行流程圖-創(chuàng)新互聯(lián)
URL分享:http://fisionsoft.com.cn/article/dgehhg.html