MapReduce演算法的執行過程是怎樣的?

2021-10-05 02:14:56 字數 741 閱讀 6166

mapreduce演算法的執行過程是怎樣的?

( 1) mapreduce框架使用inputformat模組做map前的預處理,比如驗證輸人的格式是否符合輸入定義;然後,將輸人檔案切分為邏輯上的多個inputsplit, inputsplit是mapreduce對檔案進行處理和運算的輸人單位,只是乙個邏輯概念, 每個inputsplit並沒有對檔案進行實際切割,只是記錄了要處理的資料的位置和長度。

( 2)因為inputsplit 是邏輯切分而非物理切分,所以還需要通過recordreader (rr)根據inputsplit中的資訊來處理inputsplit中的具體記錄,載入資料並轉換為適合map任務讀取的鍵值對,輸人給map任務。

(3) map任務會根據使用者自定義的對映規則,輸出一-系列的作為中間結果。

(4 )為了讓reduce可以並行處理map的結果,需要對map的輸出進行一定的分割槽( portition )、排序(sort)、合併( combine)、歸併( merge )等操作,得到)形式的中間結果,再交給對應的reduce 進行處理,這個過程稱為shuffle。 從無序的到有序的, 這個過程用shufle (洗牌)來稱呼是非常形象的。自時:0hoe

(5) reduce以一系列中間結果作為輸入,執行使用者定義的邏輯,輸出結果給outputformat模組。

(6) outputformat模組會驗證輸出目錄是否已經存在以及輸出結果型別是否符合配置檔案中的配置型別,如果都滿足,就輸出reduce的結果到分布式檔案系統。

MapReduce的執行原理

每個map上建立乙個split資料,預設和block大小相同,每乙個split都會由乙個map task進行處理,從block中讀取出每一行的資料會變成乙個個的鍵值對。接下來,讀取出來的資料都會進入記憶體緩衝區,在進入緩衝區之前,每一條資料都會被打上標籤,這個過程叫做分割槽,由分割槽器來完成,預設的...

MapReduce的執行流程

mapreduce 執行流程 shuffle在maptask和reducetask之間 1 資料的底層儲存 檔案在hdfs中以block的方式存放時,假如分為3塊,為了計算邏輯切片的大小,用fileinputformat類獲得get split方法進行切片,理論上乙個切片 乙個塊區,最後乙個邏輯切片...

Map Reduce核心之shuffle過程

重點內容!1.每個map有乙個環形記憶體緩衝區,用於儲存任務的輸出。預設大小100mb io.sort.mb屬性 一旦達到閥值0.8 io.sort.spill.percent 乙個後台執行緒把內容寫到 spill 磁碟的指定目錄 mapred.local.dir 下的新建的乙個溢位寫檔案。2.寫磁...