hadoop之MapReduce WordCount分析


MapReduce的設計思想

主要的思想是分而治之(divide and conquer),分治算法。
將一個大的問題切分成很多小的問題,然后在集群中的各個節點上執行,這既是Map過程。在Map過程結束之后,會有一個Ruduce的過程,這個過程即將所有的Map階段產出的結果進行匯集。
寫MapReduce程序的步驟:
1.把問題轉化為MapReduce模型
2.設置運行的參數
3.寫map類
4.寫reduce類
例子:統計單詞個數
將文件拆分成splits,每個文件為一個split,並將文件按行分割形成<key,value>對,MapReduce框架自動完成,其中行偏移量(即key值)包括了回車所占的字符數

將分割好的<key,value>對交給用戶定義的map方法(TokenizerMapper)進行處理,生成新的<key,value>對。

得到map方法輸出的<key,value>對后,Mapper會將它們按照key值進行排序,並執行Combine過程,將key至相同value值累加,得到Mapper的最終輸出結果。

Reducer先對從Mapper接收的數據進行排序,再交由用戶自定義的reduce方法(IntSumReducer)進行處理,
得到新的<key,value>對,並作為WordCount的輸出結果


下面我們看官方給出的例子:

1:將Block塊分割成三個Split
2:每個Split對應一個mapper
3: 三個mapper輸出結果進行Shuffling, 每個map的輸出只是簡單的key-value而非key-valuelist,
   所以洗牌的工作就是將map輸出轉化為reducer的輸入的過程。
    在reducer開始之前shuffle要做的事情分為兩步copy和sort 階段。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


免責聲明!

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



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