1. 程式人生 > >MapReduce架構簡介

MapReduce架構簡介

Hadoop MapReduce

前言:

MapReduce是用於數據處理的一種編程模型,簡單但足夠強大,專門為並行處理大數據而設計。
MapReduce的處理過程分為兩個步驟:map和reduce。每個階段的輸入輸出都是key-value的形式,key和value的類型可以自行指定。map階段對切分好的數據進行並行處理,處理結果傳輸給reduce,由reduce函數完成最後的匯總。
到了2.0之後,MapReduce可以理解為是一個jar包或一個程序,這個程序要運行在Yarn上面,上面有兩個進程,ResourceManager和NodeManager,ResourceManager裏面兩個模塊是什麽,Application Manager: 應用程序管理器 和 Scheduler:調度器,NodeManager相當於執行一個容器,這個容器裏面有 CPU+Memory,這個容器運行一個封裝的任務,MapTask(映射任務)或者跑ReduceTask(歸約任務)

下面簡單介紹下MapReduce2架構設計或者稱為MapReduce提交到Yarn的工作流程:
技術分享圖片

  • 1:用戶向YARN中提交應用程序,其中包括ApplicationMaster程序、啟動ApplicationMaster的命令、用戶程序等。
  • 2:ResourceManager為該應用程序分配第一個Container,並與對應的Node-Manager通信,要求它在這個Container中啟動應用
    程序的ApplicationMaster。
  • 3:ApplicationMaster首先向ResourceManager註冊,這樣用戶可以直接通過ResourceManage查看應用程序的運行狀態,然後
    它將為各個任務申請資源,並監控它的運行狀態,直到運行結束,即重復步驟4~7。
  • 4:ApplicationMaster采用輪詢的方式通過RPC協議向ResourceManager申請和領取資源。
  • 5:一旦ApplicationMaster申請到資源後,便與對應的NodeManager通信,要求它啟動任務。
  • 6:NodeManager為任務設置好運行環境(包括環境變量、JAR包、二進制程序等)後,將任務啟動命令寫到一個腳本中,並通
    過運行該腳本啟動任務。
  • 7:各個任務通過某個RPC協議向ApplicationMaster匯報自己的狀態和進度,以讓ApplicationMaster隨時掌握各個任務的運行
    狀態,從而可以在任務失敗時重新啟動任務。在應用程序運行過程中,用戶可隨時通過RPC向ApplicationMaster查詢應用程序
    的當前運行狀態。
  • 8:應用程序運行完成後,ApplicationMaster向ResourceManager註銷並關閉自己。

MapReduce架構簡介