天天看點

談一談你對mapreduce 的了解?(大資料面試題系列~)

MapReduce 是一種用于資料處理的程式設計模型。我們可以這樣了解MapReduce, 把一堆雜亂無章的資料按照某種特征歸納起來,然後處理并得到最後的結果。Map 面對的是雜亂無章的互不相關的資料,它解析每個資料,從中提取key 和value, 也就是提取了資料的特征。經過MapReduce 的shuffle 階段之後,在Reduce 階段看到的都是歸納好的資料,然後再進行進一步的處理以得到結果。

Hadoop2 中的MapReduce 工作機制

談一談你對mapreduce 的了解?(大資料面試題系列~)

1.用戶端開始運作MapReduce 作業

2.向資料總管請求一個新的應用ID,用作MapReduce 作業ID

3.将運作作業所需要的資源(作業JAR 檔案、配置檔案和計算所得的輸入分片)複制到HDFS中以作業ID命名的目錄下

4.送出作業

5a.資料總管配置設定一個容器

5b.在容器中啟動作業對應的application master 程序

6.作業的初始化

7.Application master 接收來自于HDFS 的、在用戶端計算的輸入分片。然後對每一個分片建立一個map 任務對象以及多個reduce 對象

application master 決定如何運作構成MapReduce 作業的各個任務。如果作業很小,就選擇在目前JVM 上運作任務,否則申請其它節點。
預設情況下,小作業就是少于10個mapper 且隻有一個reducer 且輸入大小小于一個HDFS 塊的作業。

8.如果作業不是小作業,那麼application master 就會為該作業中的所有map 任務和reduce 任務向資料總管申請容器。

首先為map 任務發出申請,這是因為所有的map 任務必須在reduce 的排序階段能夠啟動前完成。直到有5% 的map 任務已經完成時,為reduce 任務申請容器的請求才會發出。

9a 9b.一旦資料總管為任務配置設定了一個特定節點上的容器,application master 就通過與節點管理器通信來啟動容器。

10.在運作任務之前,首先将任務需要的資源本地化,包括任務作業的配置、JAR檔案等。

11.運作任務(Map 任務 or Reduce 任務)

繼續閱讀