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

shenmanli發表於2017-08-07
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操作執行流程圖




相關文章