Mapreduce詳解Shuffle過程

2022-03-09 02:30:09 字數 706 閱讀 3391

引自[

shuffle的意義有三點:

1.把map task端的資料完整傳輸到reduce task端

2.減少不必要的寬頻消耗

3.減少磁碟io消耗

首先把shuffle理解為map的shuffle和reduce的shuffle

map task端的shuffle可以分為以下幾個步驟:

1.map,對key進行value賦值

2.partitioner,對於不同的key值分配不同的reduce task端,個人理解key/value以及分哪個reduce資訊寫在一起。

3.spill,寫入記憶體緩衝區後,會造成以溢寫,寫入磁碟

4.conbiner,溢寫檔案會相同的key做合併操作

5.merge,對多個溢寫檔案進行合併,最後每個map task端只有乙個溢寫檔案

reduce task端的shuffle可以分為以下幾個步驟:

1.copy,首先根據jobtracker獲取map task資料。從不同map task端copy資料過來。

2.merge,將不同map task端的資料合併起來,作為reduce端的輸入

3,reduce,得到最終結果

這次回顧,能更深理解其中過程,但仍然覺得有部分地方理解錯誤,需要繼續對其學習。

後面將對spark進行回顧,加強學習。

目前hadoop中的mapreduce更多已被spark替代。

shuf處理文字

在cu上面看到了乙個帖子,帖子的內容即要求是 請教一下,我需要頻繁不斷地聯接9臺伺服器執行某個相同的服務。但我有特殊的要求 1。每次都按不同的順序來訪問這9臺伺服器。例如 135987642,下次又是亂序依次訪問。2。希望這9臺伺服器的主機名通過乙個shell 指令碼整合不需要另外起乙個txt文件來...

MapReduce過程詳解

1.輸入分片 input split 在進行map計算之前,mapreduce會根據輸入檔案計算輸入分片 input split 每個輸入分片 input split 針對乙個map任務。2.map階段 就是我們寫的map函式,map函式效率相對好控制,而且一般map操作都是本地化操作也就是在資料儲...

詳解MapReduce過程

textinputformat的原始碼注釋為 檢視inputformat介面的原始碼注釋我們了解到這個介面的作用為 在inputformat的源 中有如下兩個方法 inputsplit getsplits jobconf job,int numsplits throws ioexception 獲取...