MapReduce的原理及執行過程

MapReduce簡介

  1. MapReduce是一種分佈式計算模型,是Google提出的,主要用於搜索領域,解決海量數據的計算問題。
  2. MR有兩個階段組成:Map和Reduce,用戶只需實現map()和reduce()兩個函數,即可實現分佈式計算。

MapReduce執行流程

 

 MapReduce原理

 

 

 MapReduce的執行步驟:

1、Map任務處理

  1.1 讀取HDFS中的文件。每一行解析成一個<k,v>。每一個鍵值對調用一次map函數。                <0,hello you>   <10,hello me>                    

  1.2 覆蓋map(),接收1.1產生的<k,v>,進行處理,轉換爲新的<k,v>輸出。          <hello,1> <you,1> <hello,1> <me,1>

  1.3 對1.2輸出的<k,v>進行分區。默認分爲一個區。詳見《Partitioner

  1.4 對不同分區中的數據進行排序(按照k)、分組。分組指的是相同key的value放到一個集合中。 排序後:<hello,1> <hello,1> <me,1> <you,1>  分組後:<hello,{1,1}><me,{1}><you,{1}>

  1.5 (可選)對分組後的數據進行歸約。詳見《Combiner

2、Reduce任務處理

  2.1 多個map任務的輸出,按照不同的分區,通過網絡copy到不同的reduce節點上。(shuffle)詳見《shuffle過程分析

  2.2 對多個map的輸出進行合併、排序。覆蓋reduce函數,接收的是分組後的數據,實現自己的業務邏輯, <hello,2> <me,1> <you,1>

    處理後,產生新的<k,v>輸出。

  2.3 對reduce輸出的<k,v>寫到HDFS中。

轉載自:https://www.cnblogs.com/ahu-lichang/p/6645074.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章