扣丁學堂大數據培訓老師教你快速讀懂MapReduce

扣丁学堂大数据培训老师教你快速读懂MapReduce

先說一下MapReduce的定義。它是一種編程模型,用於大規模數據集的並行運算,名字中暗含著"Map(映射)"和"Reduce(歸約)"的意思,是從函數式編程語言、矢量編程語言中借鑑而來的。

扣丁学堂大数据培训老师教你快速读懂MapReduce

1)MapReduce是一個基於集群的高性能並行計算平臺(Cluster Infrastructure)。它允許用市場上普通的商用服務器構成一個包含數十、數百至數千個節點的分佈和並行計算集群。

2)MapReduce是一個並行計算與運行軟件框架(Software Framework)。它提供了一個龐大但設計精良的並行計算軟件框架,能自動完成計算任務的並行化處理,自動劃分計算數據和計算任務,在集群節點上自動分配和執行任務以及收集計算結果,將數據分佈存儲、數據通信、容錯處理等並行計算涉及到的很多系統底層的複雜細節交由系統負責處理,大大減少了軟件開發人員的負擔。

3)MapReduce是一個並行程序設計模型與方法(Programming Model & Methodology)。它藉助於函數式程序設計語言Lisp的設計思想,提供了一種簡便的並行程序設計方法,用Map和Reduce兩個函數編程實現基本的並行計算任務,提供了抽象的操作和並行編程接口,以簡單方便地完成大規模數據的編程和計算處理。

1)數據劃分和計算任務調度:

系統自動將一個作業(Job)待處理的大數據劃分為很多個數據塊,每個數據塊對應於一個計算任務(Task),並自動 調度計算節點來處理相應的數據塊。作業和任務調度功能主要負責分配和調度計算節點(Map節點或Reduce節點),同時負責監控這些節點的執行狀態,並 負責Map節點執行的同步控制。

2)數據/代碼互定位:

為了減少數據通信,一個基本原則是本地化數據處理,即一個計算節點儘可能處理其本地磁盤上所分佈存儲的數據,這實現了代碼向 數據的遷移;當無法進行這種本地化數據處理時,再尋找其他可用節點並將數據從網絡上傳送給該節點(數據向代碼遷移),但將盡可能從數據所在的本地機架上尋 找可用節點以減少通信延遲。

3)系統優化:

為了減少數據通信開銷,中間結果數據進入Reduce節點前會進行一定的合併處理;一個Reduce節點所處理的數據可能會來自多個 Map節點,為了避免Reduce計算階段發生數據相關性,Map節點輸出的中間結果需使用一定的策略進行適當的劃分處理,保證相關性數據發送到同一個 Reduce節點;此外,系統還進行一些計算性能優化處理,如對最慢的計算任務採用多備份執行、選最快完成者作為結果。

4)出錯檢測和恢復:

以低端商用服務器構成的大規模MapReduce計算集群中,節點硬件(主機、磁盤、內存等)出錯和軟件出錯是常態,因此 MapReduce需要能檢測並隔離出錯節點,並調度分配新的節點接管出錯節點的計算任務。同時,系統還將維護數據存儲的可靠性,用多備份冗餘存儲機制提 高數據存儲的可靠性,並能及時檢測和恢復出錯的數據。

標籤: 扣丁學堂大數據培訓 快速讀懂MapReduce 大數據培訓 大數據視頻教程 大數據在線學習 大數據在線視頻 大數據分析教程 大數據基礎教程 大數據入門教程 大數據在線學習 大數據雲計算


分享到:


相關文章: