一、MapReduce是什麼

  1. MapReduce是一種分散式計算框架 ,以一種可靠的,具有容錯能力的方式並行地處理上TB級別的海量數據集。主要用於搜索領域,解決海量數據的計算問題。
  2. MR有兩個階段組成:Map和Reduce,用戶只需實現map()和reduce()兩個函數,即可實現分散式計算。

二、MapReduce做什麼

  1. MapReduce框架由Map和Reduce組成。
  2. Map()負責把一個大的block塊進行切片並計算。
  3. Reduce() 負責把Map()切片的數據進行匯總、計算。

三、MapReduce怎麼做

  1. 第一步對輸入的數據進行切片,每個切片分配一個map()任務,map()對其中的數據進行計算,對每個數據用鍵值對的形式記錄,然後輸出到環形緩衝區(圖中sort的位置)。
  2. map()中輸出的數據在環形緩衝區內進行快排,每個環形緩衝區默認大小100M,當數據達到80M時(默認),把數據輸出到磁碟上。形成很多個內部有序整體無序的小文件。
  3. 框架把磁碟中的小文件傳到Reduce()中來,然後進行歸併排序,最終輸出。

四、要點是什麼

  1. MapReduce將輸入的數據進行邏輯切片,一片對應一個Map任務
  2. Map以並行的方式處理切片
  3. 框架對Map輸出進行排序,然後發給Reduce
  4. MapReduce的輸入輸出數據處於同一個文件系統(HDFS)
  5. 框架負責任務調度、任務監控、失敗任務的重新執行
  6. 框架會對鍵和值進行序列化,因此鍵和值需要實現writable介面,框架會對鍵排序,因此必須實現writableComparable介面。

五、MapReduce原語

MapReduce原語:「相同」key的鍵值對為一組調用一次Reduce方法,方法內迭代這組數據進行計算。


推薦閱讀:
相關文章