簡述MapReduce計算框架原理


1. MapReduce基本編程模型和框架

1.1 MapReduce抽象模型

大數據計算的核心思想是:分而治之。如下圖所示。把大量的數據划分開來,分配給各個子任務來完成。再將結果合並到一起輸出。注:如果數據的耦合性很高,不能分離,那么這種並行計算就不合適了。

圖1: MapReduce抽象模型

1.2 Hadoop的MapReduce的並行編程模型

如下圖2所示,Hadoop的MapReduce先將數據划分為多個key/value鍵值對。然后輸入Map框架來得到新的key/value對,這時候只是中間結果,這個時候的value值是個集合。再通過同步屏障(為了等待所有的Map處理完),這個階段會把相同key的值收集整理(Aggregation&Shuffle)在一起,再交給Reduce框架做輸出組合,如圖2中每個Map輸出的結果,有K1,K2,K3,通過同步屏障后,K2收集到一起,K2收集到一起,K3收集到一起,再分別交給Reduce,通過Reduce組合結果。


圖2:Hadoop的MapReduce的框架

1.3 Hadoop的MapReduce的完整編程模和框架

圖3是MapReduce的完整編程模型和框架,比模型上多加入了Combiner和Partitioner。

  1. Combiner
    Combiner可以理解為一個小的Reduce,就是把每個Map結果,先做一次整合。例如圖3中第三列的Map結果中有2個good,通過Combiner之后,先將本地的2個goods組合到了一起(紅色的(good,2))。好處是大大減少需要傳輸的中間結果數量,達到網絡數據傳輸優化,這也是Combiner的主要作用。

  2. Partitioner
    為了保證所有的主鍵相同的key值對能傳輸給同一個Reduce節點,如圖3中所有的good傳給第一個Reduce前,所有的is和has傳給第二個Reduce前,所有的weather,the和today傳到第三個Reduce前。MapReduce專門提供了一個Partitioner類來完成這個工作,主要目的就是消除數據傳入的Reduce節點后帶來不必要的相關性。

圖3:Hadoop的MapReduce的完整編程模型和框架

  1. 簡述MapReduce計算框架原理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM