歡迎光臨
每天分享高質量文章

漫畫:什麼是MapReduce?

來自:程式員小灰(微訊號:chengxuyuanxiaohui)

https://mp.weixin.qq.com/s/g9cXT0dlcmbkQRj6lX6zbw

—————  第二天  —————






————————————


什麼是MapReduce?


MapReduce是一種程式設計模型,其理論來自Google公司發表的三篇論文(MapReduce,BigTable,GFS)之一,主要應用於海量資料的平行計算。


MapReduce可以分成MapReduce兩部分理解。

1.Map:對映過程,把一組資料按照某種Map函式對映成新的資料。

2.Reduce:歸約過程,把若干組對映結果進行彙總並輸出。



讓我們來看一個實際應用的慄子,如何高效地統計出全國所有姓氏的人數?


我們可以利用MapReduce的思想,針對每個省的人口做並行對映,統計出若干個區域性結果,再把這些區域性結果進行整理和彙總:




這張圖是什麼意思呢?我們來分別解釋一下步驟:


1.Map

以各個省為單位,多個執行緒並行讀取不同省的人口資料,每一條記錄生成一個Key-Value鍵值對。圖中僅僅是簡化了的資料。


2.Shuffle

Shuffle這個概念在前文並未提及,它的中文意思是“洗牌”。Shuffle的過程是對資料對映的排序、分組、複製。


3.Reduce

執行之前分組的結果,併進行彙總和輸出。

需要註意的是,這裡描述的Shuffle只是抽象的概念,在實際執行過程中Shuffle被分成了兩部分,一部分在Map任務中完成,一部分在Reduce任務中完成。

Hadoop如何實現MapReduce?


Hadoop是Apache基金會開發的一套分散式系統框架,包含多個元件,其核心就是HDFSMapReduce


由於篇幅原因,文字不會對Hadoop做完整的介紹,只是簡單介紹一下Haddoop框架當中如何實現MapReduce。


下麵這張圖是Hadoop框架執行一個MapReduce Job的全過程:

這裡需要對幾種物體進行解釋:

HDFS:  

Hadoop的分散式檔案系統,為MapReduce提供資料源和Job資訊儲存。

Client Node

執行MapReduce程式的行程,用來提交MapReduce Job。

JobTracker Node

把完整的Job拆分成若干Task,負責排程協調所有Task,相當於Master的角色。

TaskTracker Node

負責執行由JobTracker指派的Task,相當於Worker的角色。這其中的Task分為MapTask和ReduceTask。



●編號308,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

大資料與人工智慧

更多推薦18個技術類公眾微信

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

贊(0)

分享創造快樂

© 2024 知識星球   網站地圖