MapReduce On yarn執行過程詳解
阿新 • • 發佈:2019-01-03
老的MapReduce主要包括Job Tracker和Task Tracker,YARN中主要是三個元件:Resource Manager、Node Manager和Application Master。Resource Manager負責全域性資源分配,Application Master每個節點一個,負責當前節點的排程和協調。Node Manager是每臺機器的代理,監控應用程式的資源使用情況,並彙報給Resource Manager。因此與老的MapReduce相比,YARN把資源管理與任務排程的工作分離開來,減少了MapReduce中Job Tracker的壓力。一:客戶端向叢集提交一個任務,該任務首先到ResourceManager中的ApplicationManager;二:ApplicationManager收到任務之後,會在叢集中找一個NodeManager,並在該NodeManager所在的DataNode上啟動一個AppMaster程序,該程序用於進行任務的劃分和任務的監控;三:AppMaster啟動起來之後,會向ResourceManager中的ApplicationManager註冊其資訊(目的是與之通訊);四:AppMaster向ResourceManager下的ResourceScheduler申請計算任務所需的資源;五:AppMaster申請到資源之後,會與所有的NodeManager通訊要求它們啟動計算任務所需的任務(Map和Reduce);六:各個NodeManager啟動對應的容器用來執行Map和Reduce任務;七:各個任務會向AppMaster彙報自己的執行進度和執行狀況,以便讓AppMaster隨時掌握各個任務的執行狀態,在某個任務出了問題之後重啟執行該任務;八:在任務執行完之後,AppMaster向ApplicationManager彙報,以便讓ApplicationManager登出並關閉自己,使得資源得以回收;最後,需要說明的是客戶端在整個叢集執行的過程中,可以通過AppMaster獲取到任務的執行狀態以及相應的進度資訊。