[TOC]
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),崇明企業(yè)網(wǎng)站建設(shè),崇明品牌網(wǎng)站建設(shè),網(wǎng)站定制,崇明網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,崇明網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。map端:
1)假設(shè)有兩個(gè)map task并行運(yùn)行。
2)每個(gè)map task任務(wù)處理完成后,會(huì)通過收集器 collector,將輸出結(jié)果存入一個(gè)環(huán)形緩沖區(qū)中。
3)環(huán)形緩沖區(qū)工作原理:
1>環(huán)形緩沖區(qū)默認(rèn)大小為100M,可以配置
mapred-site.xml:mapreduce.task.io.sort.mb 來配置大小
2>環(huán)形緩沖區(qū)閾值為 80%,超過就會(huì)開始spill溢寫??梢耘渲?mapred-site.xml:mapreduce.map.sort.spill.percent 來配置閾值的百分比
3>環(huán)形緩沖區(qū)存儲(chǔ)兩種數(shù)據(jù),
一種是元數(shù)據(jù):KV的分區(qū)號(hào),key的起始位置,value的起始位置,value長(zhǎng)度。每個(gè)元數(shù)據(jù)長(zhǎng)度固定為4個(gè)int長(zhǎng)度
一種是原始數(shù)據(jù):存儲(chǔ)key和value原本的數(shù)據(jù)
4>在元數(shù)據(jù)和原始數(shù)據(jù)的起始點(diǎn),會(huì)有一個(gè)分界線,用于區(qū)分兩種數(shù)據(jù)的存儲(chǔ)區(qū)域,然后兩者往相反方向開始寫入數(shù)據(jù)。
5>當(dāng)環(huán)形緩沖區(qū)超過80%時(shí),會(huì)將這80%的數(shù)據(jù)鎖定,然后溢寫到磁盤中變成小文件,并且這個(gè)過程中,這80%的空間不能寫入數(shù)據(jù)(由后臺(tái)一個(gè)新的線程來執(zhí)行溢寫)。同時(shí)剩下的20%可以繼續(xù)寫入數(shù)據(jù)。直到溢寫結(jié)束,解除80%的空間鎖定。
4)spill:當(dāng)緩沖器空間超過80%時(shí),一個(gè)后臺(tái)線程會(huì)啟動(dòng),開始溢寫成小文件,寫入磁盤。在這個(gè)過程中,會(huì)對(duì)緩沖區(qū)中的元數(shù)據(jù)根據(jù)先根據(jù)分區(qū)號(hào)(每個(gè)分區(qū)一個(gè)溢寫文件),然后同一分區(qū)內(nèi)根據(jù)key進(jìn)行排序(這里的排序算法使用快速排序)。接著根據(jù)排好序的元數(shù)據(jù),溢寫相應(yīng)的原始數(shù)據(jù)。最后得到已經(jīng)分區(qū)且分區(qū)內(nèi)已根據(jù)key排好序的溢寫文件。
同時(shí)在溢寫最后一步,可以加入combine過程(可選的)。
這里說到是將元數(shù)據(jù)進(jìn)行排序,然后根據(jù)排好序的元數(shù)據(jù)溢寫相應(yīng)的原始數(shù)據(jù)。為什么要這樣呢?
因?yàn)榕判蜻^程中涉及到數(shù)據(jù)的移動(dòng),而原始數(shù)據(jù)比起元數(shù)據(jù)一般都要大,所以涉及到移動(dòng)成本(包括內(nèi)存空間,cpu等成本)比較大。所以這里直接根據(jù)原始數(shù)據(jù)中的key來排序元數(shù)據(jù),最后形成一個(gè)有序的元數(shù)據(jù)區(qū)域。最后只要依次根據(jù)元數(shù)據(jù),從原始數(shù)據(jù)區(qū)域中讀取對(duì)應(yīng)位置的KV,就可以得到有序的原始數(shù)據(jù)。
5)歸并排序:當(dāng)溢寫完成后,一般會(huì)發(fā)生多次溢寫,從而生成多個(gè)已分區(qū),并且區(qū)內(nèi)有序的溢寫文件。接著就是將同一分區(qū)的多個(gè)溢寫文件進(jìn)行歸并排序,合成一個(gè)大的溢寫文件,且里面是有序的。這個(gè)過程中也可以加入combine過程(可選的)。其實(shí)這個(gè)歸并的過程是分多次進(jìn)行的,不是一次性完成的。
6)最后將歸并完后的溢寫文件經(jīng)過壓縮寫入到磁盤中。至此shuffle在map端的流程已經(jīng)完成
reduce端:一個(gè)分區(qū)對(duì)應(yīng)一個(gè)reduce task
7)reducer中有的MRAppMaster線程定期詢問map task輸出結(jié)果的文件位置,mapper會(huì)在map結(jié)束后向MRAppMaster匯報(bào)信息,從而reducer得到map的狀態(tài),得到map的結(jié)果文件的目錄。接著reduce會(huì)自動(dòng)向多個(gè)map拉取同一分區(qū)的結(jié)果文件到本地。拉取過程中,會(huì)先將數(shù)據(jù)暫存到緩沖區(qū)中,默認(rèn)是100M,也是環(huán)形緩沖區(qū)。當(dāng)數(shù)據(jù)量大于緩沖區(qū)大小時(shí),就會(huì)將數(shù)據(jù)寫入到磁盤中。
8)歸并排序merge:拉取完成后,會(huì)將多個(gè)結(jié)果文件進(jìn)行歸并排序,最終合成一個(gè)大的有序文件。這個(gè)merge 的過程中,會(huì)涉及到數(shù)據(jù)的輸入和輸出是在哪的,比如是輸入輸出都是內(nèi)存中的,輸入內(nèi)存,輸出硬盤的;輸入硬盤,輸出也是硬盤的。方式不同,明顯性能肯定不同。這是MapReduce優(yōu)化的一個(gè)點(diǎn)
9)接著會(huì)進(jìn)行分組group過程。將同一個(gè)key的鍵值對(duì)合并成(key, array)的形式。如:(king,1), (king,2) 合并成 (king,[1,2])。這里面可以自定義分組方式。
10)而后面接著的group操作,一個(gè)分組就只會(huì)調(diào)用一次reduce方法,而且默認(rèn)只會(huì)使用分組中的第一個(gè)KV作為reduce的輸入,剩余的KV不會(huì)做處理,直接丟棄。這里可以自定義分組類。
11)merge,group過程完畢后,就會(huì)每個(gè)KV調(diào)用一次reduce方法,最終reduce輸出。
partition:分區(qū)
spill:溢寫
merge:遷移合并
sort:排序。有3次排序。分別是溢寫中的快速排序,將多個(gè)溢寫文件合并的歸并排序。以及在reduce端中將多個(gè)map的結(jié)果文件進(jìn)行歸并排序。
combine:map端的初次合并,業(yè)務(wù)邏輯就是reduce,只不過是局部的,這個(gè)過程是可選的。但是可以作為優(yōu)化的點(diǎn),因?yàn)榭梢詼p少reduce從map拉取數(shù)據(jù)的數(shù)據(jù)量。
在map端溢出的文件其實(shí)有兩部分,一部分是索引文件,一部分是數(shù)據(jù)本身。
![](E:\file\big data\picture\assets\MapReduce-mapMerge.png)
索引文件:主要是記錄各個(gè)分區(qū)在數(shù)據(jù)文件中的偏移量。
數(shù)據(jù)文件:記錄了KV的長(zhǎng)度,KV的數(shù)據(jù)。
其實(shí)由此可以看出,map端存儲(chǔ)多個(gè)分區(qū)的溢寫結(jié)果時(shí),并不是獨(dú)立存儲(chǔ)到獨(dú)立的文件中的,而是存儲(chǔ)到同一個(gè)文件中,然后通過索引文件來標(biāo)識(shí)各個(gè)分區(qū)的數(shù)據(jù)在總的數(shù)據(jù)文件中的偏移量來讀取不同分區(qū)的數(shù)據(jù)。這個(gè)存儲(chǔ)方式的好處是,如果分區(qū)很多話,單獨(dú)存儲(chǔ)每個(gè)分區(qū)的數(shù)據(jù),就會(huì)生成多個(gè)文件,占用多個(gè)hdfs的索引資源。而采用上述的方式,則只需讀取兩個(gè)文件。
另外有需要云服務(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)景需求。
標(biāo)題名稱:三、MapReduce的shuffle工作過程-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://www.rwnh.cn/article22/cehdcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、外貿(mào)建站、網(wǎng)站維護(hù)、用戶體驗(yàn)、網(wǎng)站設(shè)計(jì)、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容