MapReduce工作原理

2021-08-30 17:21:39 字數 1364 閱讀 9379

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

乙個map-reduce任務的執行過程以及資料輸入輸出的型別如下所示:

[color=orange](input)-> map -> -> combine -> -> reduce -> (output)[/color]

下面通過乙個的例子並結合源**來詳細說明這個過程

3.1 wordcount示例

這也是hadoop自帶的乙個例子,目標是統計文字檔案中單詞的個數。

hello world bye world

hello hadoop goodbye hadoop

3.2 map資料輸入

hadoop針對文字檔案預設使用linerecordreader類來實現讀取,一行乙個key/value對,key取偏移量,value為行內容。

如下是map1的輸入資料:

key1 value1

0 hello world bye world

如下是map2的輸入資料:

key1 value1

0 hello hadoop goodbye hadoop

3.3 map輸出/combine輸入

如下是map1的輸出結果

key2 value2

hello 1

world 1

bye 1

world 1

如下是map2的輸出結果

key2 value2

hello 1

hadoop 1

goodbye 1

hadoop 1

3.4 combine輸出

combiner類實現將相同key的值合併起來,它也是乙個reducer的實現。

如下是combine1的輸出

key2 value2

hello 1

world 2

bye 1

如下是combine2的輸出

key2 value2

hello 1

hadoop 2

goodbye 1

3.5 reduce輸出

reducer類實現將相同key的值合併起來。

如下是reduce的輸出

key2 value2

hello 2

world 2

bye 1

hadoop 2

goodbye 1

即實現了wordcount的處理

MapReduce工作原理

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

map reduce工作原理

下面的圖來自南京大學計算機系黃宜華老師開設的mapreduce課程的課件,這裡稍作整理和 總結。本文旨在對接觸了mapreduce之後,但是對mapreduce的工作流程仍不是很清楚的人員,當然包括博主自己,希望與大家一起學習。mapreduce借鑑了函式式程式語言lisp中的思想,lisp lis...

MapReduce工作原理

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