雲計算的關鍵技術主要包括:虛擬化、海量數據處理、大規模分佈式存儲、消息通信、快速部署、資源調度、多租戶技術、許可證管理與計費。。。作爲一個到目前爲止還沒有一個清晰的統一的概念的應用模式,雲計算無疑是有着廣闊的前景。
本文對雲計算中所用到的MapReduce做一個小小的初探,簡要介紹一下其思路。
What?什麼是MapReduce。
MapReduce是一個軟件架構,是一種處理海量數據的並行編程模式,用於大規模數據集(通常大於1TB)的並行運算。
MapReduce實現了Map和Reduce兩個功能
–Map把一個函數應用於集合中的所有成員,然後返回一個基於這個處理的結果集
–Reduce對結果集進行分類和歸納
–Map()和 Reduce() 兩個函數可能會並行運行,即使不是在同一的系統的同一時刻
How?案例:單詞記數問題(Word Count)
問題提出:給定一個巨大的文本(如1TB),如何計算單詞出現的數目?
下面使用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: 自動對文本進行分割
Step 2:在分割之後的每一對<key,value>進行用戶定義的Map進行處理,再生成新的<key,value>對
Step 3:對輸出的結果集歸攏、排序(系統自動完成)
Step 4:通過Reduce操作生成最後結果
通過簡單的圖示,我們可以對MapReduce有一個初步的認識。當然,還是比較模糊。以後的文章,會進一步介紹。