99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2019-01-25 閱讀量: 944
shuffle中的Collect過程怎么理解?

shuffle中的Collect過程怎么理解?

答:Collect過程是這樣的:每個(gè) Map 任務(wù)不斷地以對的形式把數(shù)據(jù)輸出到在內(nèi)存中構(gòu)造的一個(gè)環(huán)形數(shù)據(jù)結(jié)構(gòu)中。使用環(huán)形數(shù)據(jù)結(jié)構(gòu)是為了更有效地使用內(nèi)存空間, 在內(nèi)存中放置盡可能多的數(shù)據(jù)。
這個(gè)數(shù)據(jù)結(jié)構(gòu)其實(shí)就是個(gè)字節(jié)數(shù)組, 叫 Kvbuffer, 名如其義, 但是這里面不光放置了數(shù)據(jù), 還放置了一些索引數(shù)據(jù), 給放置索引數(shù)據(jù)的區(qū)域起了一個(gè) Kvmeta 的別名, 在 Kvbuffer的一塊區(qū)域上穿了一個(gè) IntBuffer(字節(jié)序采用的是平臺(tái)自身的字節(jié)序) 的馬甲。 數(shù)據(jù)區(qū)域和索引數(shù)據(jù)區(qū)域在 Kvbuffer 中是相鄰不重疊的兩個(gè)區(qū)域, 用一個(gè)分界點(diǎn)來劃分兩者,分界點(diǎn)不是亙古不變的,而是每次Spill之后都會(huì)更新一次。初始的分界點(diǎn)是 0,數(shù)據(jù)的存儲(chǔ)方向是向上增長,索引數(shù)據(jù)的存儲(chǔ)方向是向下增長,如圖所示:

Kvbuffer的存放指針bufindex是一直悶著頭地向上增長,比如 bufindex 初始值為 0,一個(gè) Int 型的 key 寫完之后, bufindex 增長為 4, 一個(gè) Int 型的 value 寫完之后, bufindex增長為 8。
索引是對在 kvbuffer 中的索引, 是個(gè)四元組, 包括: value 的起始位置、 key 的起始位置、partition 值、value 的長度,占用四個(gè)Int長度, Kvmeta的存放指針Kvindex 每次都是向下跳四個(gè)“格子”, 然后再向上一個(gè)格子一個(gè)格子地填充四元組的數(shù)據(jù)。 比如 Kvindex 初始位置是-4, 當(dāng)?shù)谝粋€(gè)寫完之后, (Kvindex+0)的位置存放 value 的起始位置、 (Kvindex+1)的位置存放 key 的起始位置、 (Kvindex+2)的位置存放 partition 的值、 (Kvindex+3)的位置存放value 的長度, 然后 Kvindex 跳到-8 位置, 等第二個(gè)和索引寫完之后, Kvindex 跳到-32 位置。

Kvbuffer 的大小雖然可以通過參數(shù)設(shè)置, 但是總共就那么大, 和索引不斷地增加, 加著加著, Kvbuffer 總有不夠用的那天, 那怎么辦? 把數(shù)據(jù)從內(nèi)存刷到磁盤上再接著往內(nèi)存寫數(shù)據(jù), 把 Kvbuffer 中的數(shù)據(jù)刷到磁盤上的過程就叫 Spill, 多么明了的叫法, 內(nèi)存中的數(shù)據(jù)滿了就自動(dòng)地 spill 到具有更大空間的磁盤。
關(guān)于 Spill 觸發(fā)的條件, 也就是 Kvbuffer 用到什么程度開始 Spill, 還是要講究一下的。如果把 Kvbuffer 用得死死得, 一點(diǎn)縫都不剩的時(shí)候再開始 Spill, 那 Map 任務(wù)就需要等 Spill完成騰出空間之后才能繼續(xù)寫數(shù)據(jù); 如果 Kvbuffer 只是滿到一定程度, 比如 80%的時(shí)候就開始 Spill, 那在 Spill 的同時(shí), Map 任務(wù)還能繼續(xù)寫數(shù)據(jù), 如果 Spill 夠快, Map 可能都不需要為空閑空間而發(fā)愁。 兩利相衡取其大, 一般選擇后者。
Spill 這個(gè)重要的過程是由 Spill 線程承擔(dān), Spill 線程從 Map 任務(wù)接到“命令”之后就開始正式干活, 干的活叫 SortAndSpill, 原來不僅僅是 Spill, 在 Spill 之前還有個(gè)頗具爭議性的Sort。

0.0000
4
關(guān)注作者
收藏
評(píng)論(0)

發(fā)表評(píng)論

暫無數(shù)據(jù)
推薦帖子