好程式設計師大資料培訓教你快速學習MapReduce

好程式設計師發表於2020-10-20

  好程式設計師 大資料培訓教你快速 學習 MapReduce 先說一下MapReduce 的定義。它是一種程式設計模型,用於大規模資料集的並行運算,名字中暗含著 "Map( 對映 )" "Reduce( 歸約 )" 的意思,是從函數語言程式設計語言、向量程式語言中借鑑而來的。

   MapReduce 的三層含義

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

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

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

   MapReduce 的四大功能

   1) 資料劃分和計算任務排程:

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

   2) 資料 / 程式碼互定位:

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

   3) 系統最佳化:

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

   4) 出錯檢測和恢復:

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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2728201/,如需轉載,請註明出處,否則將追究法律責任。

相關文章