MapReduce是由JeffreyDean提出的一種處理大數據的編程模型,用戶定義map和reduce函數,map函數處理原始數據生成一系列鍵值對中間數據,reduce函數併合相同key的鍵值對。編程
整個計算過程輸入的是鍵值對,輸出的也是鍵值對。用戶只須要提供兩個函數分別是Map和Reduce。
好比要統計大數據文本中的詞頻,咱們能夠寫出以下的Map和Reduce函數:函數
map(String key, String value): // key: document name // value: document contents for each word w in value: EmitIntermediate(w, "1"); reduce(String key, Iterator values): // key: a word // values: a list of counts int result = 0; for each v in values: result += ParseInt(v); Emit(AsString(result));
map函數的參數key, value分別是文本名和文本內容,map函數提取文本的每一個單詞,每一個單詞生成一個<w, "1">的鍵值對。
reduce函數對這些鍵值對進行並和,產生最終的統計結果。大數據
當用戶程序調用MapReduce函數後,將會發生以下動做:code
worker failure:blog
master failure:
master只有一個,失敗概率很小。能夠終止MapReduce。pdo