MapReduce初探

    雲計算的關鍵技術主要包括:虛擬化、海量數據處理、大規模分佈式存儲、消息通信、快速部署、資源調度、多租戶技術、許可證管理與計費。。。作爲一個到目前爲止還沒有一個清晰的統一的概念的應用模式,雲計算無疑是有着廣闊的前景。

    本文對雲計算中所用到的MapReduce做一個小小的初探,簡要介紹一下其思路。

What?什麼是MapReduce。

MapReduce是一個軟件架構,是一種處理海量數據的並行編程模式,用於大規模數據集(通常大於1TB)的並行運算。

MapReduce實現了Map和Reduce兩個功能

–Map把一個函數應用於集合中的所有成員,然後返回一個基於這個處理的結果集

–Reduce對結果集進行分類和歸納

–Map()和 Reduce() 兩個函數可能會並行運行,即使不是在同一的系統的同一時刻

How?案例:單詞記數問題(Word Count)

問題提出:給定一個巨大的文本(如1TB),如何計算單詞出現的數目?

Map1

下面使用MapReduce求解該問題,思路如下:

首先定義Map和Reduce函數

Map(K, V)

{

       For each word w in V

             Collect(w, 1);

}

Reduce(K, V[])

{

      int count = 0;

      For each v in V

            count += v;

      Collect(K, count);

}

 

Step 1: 自動對文本進行分割

Map2

 

Step 2:在分割之後的每一對<key,value>進行用戶定義的Map進行處理,再生成新的<key,value>對

Map3

 

Step 3:對輸出的結果集歸攏、排序(系統自動完成)

Map4

 

Step 4:通過Reduce操作生成最後結果

Map5

通過簡單的圖示,我們可以對MapReduce有一個初步的認識。當然,還是比較模糊。以後的文章,會進一步介紹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章