MapReduce簡單介紹
聲明:本文是本人基於Hadoop權威指南學習的一些個人理解和筆記,僅供學習參考,有什么不到之處還望指出,一起學習一起進步。
轉載請注明:http://blog.csdn.net/my_acm
上一篇介紹了什么是Hadoop。Hadoop的作用等。本篇相同基於Hadoop權威指南,結合迪倫的Hadoop的視頻教程對MapReduce做一個介紹。
1、
MapReduce是Hadoop的核心之中的一個。MapReduce分為兩個部分,Mapper和Ruducer模塊。簡單來說就是前者完畢鍵值得映射,后者完畢整合過程。同是這兩個模塊也是編程和開發者能夠對數據處理設計算法編程的地方。那么對於人員來說要用什么方法或者說是什么語言來寫這些Map和Reduce函數呢?
(1) Hadoop是java語言開發的,那么自然就支持java接口的編程方式了,所以java的效率在Hadoop上執行的效率要相對照較高。以下也會重點結合迪倫的教程展示一下java怎樣編寫完畢mapreduce的。
(2) Hadoop管道(pipes)支持c/c++。
(3) 同是Hadoop也提供了Hadoop流(streaming)支持其它語言如Python。Ruby等。
2、
MapReducejob是client執行的單位,通過將job分成若干個小的task(task當中包含map和reduce)來完畢。Hadoop通過把輸入分成若干個等長的分片發送到MapReduce中處理。Hadoop為每一個分片創建一個map任務來執行map函數。
以下是幾種MapReduce執行圖。
3、
WordCount(計算不同單詞的個數)是MapReduce里面的一個問題。
以下是Word Count的MapReduce的詳細過程圖及事實上現代碼