第七課 wordcount詳解shuffle機(jī)制

本文主要以wordcount為例詳細(xì)闡述shuffle的實(shí)現(xiàn)過程

一、map方法執(zhí)行之前

image.png

我們知道,HDFS里的文件是分塊存放在Datanode上面的,而我們寫的mapper程序也是跑在各個(gè)節(jié)點(diǎn)上的。這里就涉及到一個(gè)問題,哪一個(gè)節(jié)點(diǎn)上的mapper讀哪一些節(jié)點(diǎn)上的文件塊呢?hadoop會自動將這個(gè)文件分片(split),得到好多split,這每一個(gè)split放到一個(gè)節(jié)點(diǎn)的一個(gè)mapper里面去讀。然后在每一臺有mapper任務(wù)的節(jié)點(diǎn)上都執(zhí)行了這么一個(gè)操作,將分得到的split切割成一行一行的鍵值對,然后傳給map方法。鍵是這每一行在split中的偏移量,值是每一行得到的字符串。

二、執(zhí)行map方法

image.png

寫過wordcount的朋友都知道,這個(gè)過程就是讀到每一行,切割字符串,生成鍵值對寫出去。

三、shuffle操作(一)

這個(gè)過程是在有map任務(wù)的節(jié)點(diǎn)上完成的

image.png

1. partition

將得到的鍵值對按照一定的規(guī)則分組,例如例子中將首字母為a的全部分到一組,將首字母為b的分到一組。這里只是為了講明白這個(gè)方式,進(jìn)行了過程簡化,實(shí)際不一定是分為兩組,也不一定是按照首字母分組。

2. sort

對每一個(gè)組中的鍵值對根據(jù)鍵的哈希碼排序。

3. combine

將具有相同鍵的鍵值對合成一個(gè)新的鍵值對,這個(gè)新的鍵值對的鍵是原來的鍵,鍵值是所有鍵的鍵值之和。

四、shuffle操作(二)

這個(gè)過程是在有reduce任務(wù)的節(jié)點(diǎn)上完成的。

image.png

1. 拉取partition

hadoop決定有多少個(gè)reducer的時(shí)候會規(guī)定有多少個(gè)partition,每一個(gè)reducer拉取自己要處理的那個(gè)分組的全部成員。例如,某臺節(jié)點(diǎn)要處理所有以a開頭的鍵值對,它就會將所有mapper中的以a開頭的那一組全部拉取過來。

2. merge

在每一個(gè)reducer上,將具有相同鍵的鍵值對生成另外一個(gè)新的鍵值對,鍵是以前的鍵,鍵值是一個(gè)以前鍵值的集合。

3. sort

在每一臺reducer節(jié)點(diǎn)上,將新生成的鍵值對進(jìn)行排序,根據(jù) 哈希碼值。

五、reduce操作

image.png

寫過wordcount的朋友都知道,在reduce方法中,hadoop回傳過來一個(gè)一個(gè)的鍵值對,鍵是每一個(gè)單詞,鍵值就是四中新生成的鍵值對的鍵值。執(zhí)行reduce操作,就是將每一個(gè)鍵值對中的鍵值累加起來。然后以鍵值對的形式將結(jié)果寫出去。

六、文件寫入HDFS

image.png

在每一臺reducer節(jié)點(diǎn)上將文件寫入,實(shí)際上是寫成一個(gè)一個(gè)的文件塊,但對外的表現(xiàn)形式是一整個(gè)大的結(jié)果文件。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • MapReduce執(zhí)行流程 MapReduce的執(zhí)行步驟 1、Map任務(wù)處理 1.1 讀取HDFS中的文件。每一行...
    依天立業(yè)閱讀 2,362評論 0 8
  • 目的這篇教程從用戶的角度出發(fā),全面地介紹了Hadoop Map/Reduce框架的各個(gè)方面。先決條件請先確認(rèn)Had...
    SeanC52111閱讀 1,841評論 0 1
  • 本文主要以wordcount為例詳細(xì)闡述shuffle的實(shí)現(xiàn)過程 一、map方法執(zhí)行之前 我們知道,HDFS里的文...
    __豆約翰__閱讀 589評論 0 2
  • 二年級以來,別的孩子都在有意識的提高作文,我也希望孩子能練練作文,但是沒有老師指導(dǎo),該如何提高孩子的作文水平呢? ...
    笨抖抖閱讀 492評論 0 0
  • 跟上篇一樣,知乎看到的一個(gè)問答,很棒,分享給大家。 中國老一輩導(dǎo)演經(jīng)受得住新時(shí)代IP電影,甚至只是新貴導(dǎo)演的沖擊嗎...
    小粥哥閱讀 882評論 1 2

友情鏈接更多精彩內(nèi)容