MapReduce 程式設計模型概述

2021-09-06 21:52:15 字數 1182 閱讀 4751

mapreduce 程式設計模型給出了其分布式程式設計方法,共分 5 個步驟:

1)迭代(iteration)。遍歷輸入資料, 並將之解析成 key/value 對。

2) 將輸入 key/value 對對映(map) 成另外一些 key/value 對。

3) 依據 key 對中間資料進行分組(grouping)。

4) 以組為單位對資料進行歸約(reduce)。

5)迭代。 將最終產生的 key/value 對儲存到輸出檔案中。

mapreduce 將計算過程分解成以上 5 個步驟帶來的最大好處是元件化與並行化。為了實現 mapreduce 程式設計模型, hadoop 設計了一系列對外程式設計介面 。使用者可通過實現這些介面完成應用程式的開發。

❑ jobcontrol:方便使用者編寫有依賴關係的作業, 這些作業往往構成乙個有向圖, 所以通常稱為 dag( directed acyclic graph) 作業。

❑ hadoop pipes:專門為 c/c++ 程式設計師編寫 mapreduce 程式提供的工具包。

從 0.20.0 版本開始, hadoop 同 時提供了 新舊 兩套 mapreduce api。 新 api 在舊 api基礎上進行了封裝, 使得其在擴充套件性和易用性方面更好。 新舊版 mapreduce api 的主要區別如下。

(1)存放位置

舊版 api 放在 org.apache.hadoop.mapred 包中, 而新版 api 則放在org.apache.hadoop.mapreduce 包及其子包中。

(2)介面變為抽象類

(3)上下文封裝除了以上三點不同之外,新舊 api 在很多其他細節方面也存在小的差別,具體將在接下來的內容中講解。

由於新版和舊版 api 在類層次結構、程式設計介面名稱及對應的引數列表等方面存在較大差別, 所以兩種 api 不能相容。但考慮到應用程式的向後相容性,短時間內不會將舊 api

從 mapreduce 中去掉。即使在完全採用新 api 的 0.21.0/0.22.x 版本系列中,也僅僅將舊api 標註為過期(deprecated),使用者仍然可以使用。

《hadoop技術內幕 深入理解mapreduce架構設計與實現原理》

MapReduce 程式設計模型概述

可以帶著下面問題來閱讀 mapreduce的過程都包含什麼操作?map處理完後,tasktracer會完成什麼任務?ruducer的作用是什麼?map中經過誰的處理之後,變為reduce輸入?1.首先,我們能確定我們有乙份輸入,而且他的資料量會很大 2.通過split之後,他變成了若干的分片,每個分...

MapReduce 程式設計模型概述

mapreduce 程式設計模型給出了其分布式程式設計方法,共分 5 個步驟 1 迭代 iteration 遍歷輸入資料,並將之解析成 key value 對。2 將輸入 key value 對對映 map 成另外一些 key value 對。3 依據 key 對中間資料進行分組 grouping ...

MapReduce程式設計模型

計算採用一組輸入鍵 值對,並產生一組輸出鍵 值對。mapreduce庫的使用者將計算表達為兩個函式 map和reduce。input1 map a,1 b,1 c,1 input2 map b,1 input3 map a,1 c,1 reduce c,2 reduce b,2 reduce a,2...