1. 程式人生 > >處理海量數據的模式MapReduce,大規模數據集的並行運算

處理海量數據的模式MapReduce,大規模數據集的並行運算

海量數據 mapreduce

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

“Map(映射)”、“Reduce(化簡)”的概念和主要思想,都是從函數式編程語言和矢量編程語言借鑒。

適合非結構化和結構化的海量數據的搜索、挖掘、分析與機器智能學習等。


MapReduce計算模型


分布式計算的瓶頸是網絡帶寬。“本地計算”是最有效的一種節約網絡帶寬的手段。


MapReduce的特點


1、輸入的鍵值是不固定的,由分析人員選擇

2、對於非結構化和半結構化數據,非常有效

3、適合於大規模數據的一次寫入,多次查詢

4、MapReduce其核心就是高速、流式讀寫操作


無共享


無共享結構讓MapReduce程序員無需考慮系統的部分失效問題;

因為自身的系統實現,能夠檢測到失敗的map或reduce任務;

並讓正常的機器重新執行這些失敗的任務;

因為各個任務之間彼此獨立;

任務的執行順序是無關緊要的;


MapReduce計算流程


技術分享


MapReduce運行模型


Map函數——對一部分原始數據進行指定的操作。每個Map操作都針對不同的原始數據,因此Map與Map之間是互相獨立的,這使得它們可以充分並行化。

Reduce操作——對每個Map所產生的一部分中間結果進行合並操作,每個Reduce所處理的Map中間結果是互不交叉的,所有Reduce產生的最終結果經過簡單連接就形成了完整的結果集

技術分享


數據分布存儲,帶來計算上的並行化:

技術分享


MapReduce操作執行流程圖

技術分享


本文出自 “中科院計算所培訓” 博客,謝絕轉載!

處理海量數據的模式MapReduce,大規模數據集的並行運算