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