map reduce工作原理

2021-07-08 12:32:03 字數 1286 閱讀 5042

下面的圖來自南京大學計算機系黃宜華老師開設的mapreduce課程的課件,這裡稍作整理和 總結。

本文旨在對接觸了mapreduce之後,但是對mapreduce的工作流程仍不是很清楚的人員,當然包括博主自己,希望與大家一起學習。

mapreduce借鑑了函式式程式語言lisp中的思想,lisp(list processing)是一種列表處理語言,可對列表元素進行整體處理。

如:(add #(1 2 3 4) #(4 3 2 1))   

將產生結果:

#(5 5 5 5)

mapreduce之所以和lisp類似,是因為mapreduce在最後的 reduce階段也是以key為分組進行列的運算。

下面這幅圖就是mapreduce的工作原理

1)首先文件的資料記錄(如文字中的行,或資料**中的行)是以「鍵值對」的形式傳入map 函式,然後map函式對這些鍵值對進行處理(如統計詞頻),然後輸出到中間結果。

2)在鍵值對進入reduce進行處理之前,必須等到所有的map函式都做完,所以既為了達到這種同步又提高執行效率,在mapreduce中間的過程引入了barrier(同步障)

在負責同步的同時完成對map的中間結果的統計,包括a. 對同乙個map節點的相同key的value值進行合併b. 之後將來自不同map的具有相同的key的鍵值對送到同乙個reduce進行處理

3)在reduce階段,每個reduce節點得到的是從所有map節點傳過來的具有相同的key的鍵值對。reduce節點對這些鍵值進行合併。

詞頻統計就是統計乙個單詞在所有文字中出現的次數,在hadoop中的事例程式就是wordcount,俗稱hadoop程式設計的"hello world".

因為我們有多個文字,所以可以並行的統計每個文字中單詞出現的個數,然後最後進行合計。

所以這個可以很好地體現map,reduce的過程。

可以發現,這張圖是上面那張圖的進一步細化,主要體現在:

1)combiner 節點負責完成上面提到的將同乙個map中相同的key進行合併,避免重複傳輸,從而減少傳輸中的通訊開銷。

2)partitioner節點負責將map產生的中間結果進行劃分,確保相同的key到達同乙個reduce節點.

MapReduce工作原理

本文的目錄 1.mapreduce作業執行流程 2.map reduce任務中shuffle和排序的過程 mapreduce作業詳細的執行流程 流程分析 1.在客戶端啟動乙個作業。2.向jobtracker請求乙個job id。3.將執行作業所需要的資源檔案複製到hdfs上,包括mapreduce程...

MapReduce工作原理

map reduce框架的運作完全基於對,即資料的輸入是一批對,生成的結果也是一批對,只是有時候它們的型別不一樣而已。key和value的類由於需要支援被序列化 serialize 操作,所以它們必須要實現writable介面,而且key的類還必須實現writablecomparable介面,使得可...

MapReduce工作原理

一切都是從最上方的user program開始的,user program鏈結了mapreduce庫,實現了最基本的map函式和reduce函式。mapreduce庫先把user program的輸入檔案劃分為m份 m為使用者定義 每乙份通常有16mb到64mb,如圖左方所示分成了split0 4 ...