MapReduce初探

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

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

What?什麼是MapReduce。分佈式

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

MapReduce實現了Map和Reduce兩個功能函數

–Map把一個函數應用於集合中的全部成員,而後返回一個基於這個處理的結果集雲計算

–Reduce對結果集進行分類和概括3d

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

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

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

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有一個初步的認識。固然,仍是比較模糊。之後的文章,會進一步介紹。

相關文章
相關標籤/搜索