MapReduce的基本工作原理

2021-08-20 03:44:01 字數 1504 閱讀 4203

三個層面上的基本構思

1.如果對付大資料處理:分而治之

對相互之間不具有計算依賴關係的大資料,實現並行最自然的辦法就是採取分而治之的策略。

mpi等平行計算方法缺少高層並行程式設計模型,程式設計師需要自行指定儲存,計算,分發等任務,為了克服這一缺陷,mapreduce借鑑了lisp函式式語言中的思想,用map和reduce兩個函式提供了高層的併發程式設計模型抽象。

3.上公升到架構:統一架構,為程式設計師隱藏系統層細節

mpi等平行計算方法缺少統一的計算框架支援,程式設計師需要考慮資料儲存、劃分、分發、結果收集、錯誤恢復等諸多細節;為此,mapreduce設計並提供了同意的計算框架,為程式設計師隱藏了絕大多數系統層面的處理系統。

大資料分而治之

建立map和reduce抽象模型

每個map都處理結構、大小相同的初始資料塊,也就是(k1:v1),其中k1是主鍵,可以是資料塊索引,也可以是資料塊位址;

v1是資料。經過map節點的處理後,生成了很多中間資料集,用表示資料集的意思。而reduce節點接收的資料是對中間資料合併後的資料,也就是把key值相等的資料合併在一起了,即(k2:[v2]);再經過reduce處理後,生成處理結果。

例如要把乙個統計一篇英語文章中各個單詞出現的次數

1.有乙個待處理的大資料,被劃分成大小相同的資料庫(如64mb),以及與此相應的使用者作業程式。

2.系統中有乙個負責排程的主節點(master),以及資料map和reduce工作節點(worker).

3.使用者作業提交個主節點。

4.主節點為作業程式尋找和配備可用的map節點,並將程式傳送給map節點。

5.主節點也為作業程式尋找和配備可用的reduce節點,並將程式傳送給reduce節點。

6.主節點啟動每乙個map節點執行程式,每個map節點盡可能讀取本地或本機架的資料進行計算。(實現**向資料靠攏,減少集群中資料的通訊量)。

7.每個map節點處理讀取的資料塊,並做一些資料整理工作(combining,sorting等)並將資料儲存在本地機器上;同時通知主節點計算任務完成並告知主節點中間結果資料的儲存位置。

8.主節點等所有map節點計算完成後,開始啟動reduce節點執行;reduce節點從主節點所掌握的中間結果資料位置資訊,遠端讀取這些資料。

9.reduce節點計算結果彙總輸出到乙個結果檔案,即獲得整個處理結果。

MapReduce的工作原理

mapreduce工作原理 詳解 前言 前段時間我們雲計算團隊一起學習了hadoop相關的知識,大家都積極地做了 學了很多東西,收穫頗豐。可是開學後,大家都忙各自的事情,雲計算方面的動靜都不太大。呵呵 不過最近在胡老大的號召下,我們雲計算團隊重振旗鼓了,希望大夥仍高舉 雲在手,跟我走 的口號戰鬥下去...

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...