通俗说基于Yarn的Map-Reduce过程
先看全圖是基于Yarn的Map-Reduce運行過程,下面通俗的說一下這個過程。
從前有一個老板Resource Manager,開了一家外包公司,這家公司有很多的團隊Node,每個團隊都有個經理Node Manager,每過一段時間,團隊經理Node Manager都要到老板那里開會,向老板的人事部門Manage NMs的ResourceTackerService報告當前的人員使用情況。
這一天,來了一個客戶Client,來到總部的接待處ClientRMService說,我有個項目,你們干不?getNewApplication
當老板覺得這個項目干得過,于是就給客戶Client拿了一個號Application ID,說項目我們接,把你們的項目材料提交一下吧。
于是客戶Client回去整理了一下項目的材料,將項目的具體材料,例如項目執行所需要的jars,項目的說明文檔job.xml,項目的進度規劃splits,上傳到了同一的云盤HDFS上,然后向總部提交了申請表submitApplication。
老板Resource Manager對項目管理組Manage AMs的人說,接了項目,弄個項目經理ApplicationMaster(MRAppMaster)吧(startContainter),專門負責這個項目的對接。于是在一個團隊里面Node Manager下面抽了一個人,做項目經理,然后告訴客戶,以后由著項目經理進行對接了。
項目經理MRAppMaster說:是,老板!,于是走馬上任registerApplicationMaster。
項目經理MRAppMaster對客戶說:以后這個項目的事情,就由我來對接了,我會不斷將項目進度反饋給你的getJobReport。
新官上任三把火,項目經理MRAppMaster開始擼起袖子干革命了。
第一件事情,就是從云盤HDFS上將項目資料下載下來,仔細閱讀,發現這個客戶要干的事情真不少,需要很多人一起干,于是按照splits里面的規劃,將任務分成很多份,大家一起干MapTask,這樣干的快,但是最終的結果,還是需要幾個可靠的人將大家的結果收集起來,做個匯總ReduceTask,然后將項目結果也寫到云盤HDFS上去,告訴客戶任務執行完了,結果在云盤上,自己去看吧。
好了,項目經理MRAppMaster做好了上述的規劃,開始干。
項目經理先去總部申請人頭allocate,由于每個人都是算工時的,因而MapTask的部分可以先安排人,做總結匯報的ReduceTask的人還不著急。
于是總部Resource Manager經過協調部門Scheduler找到了足夠的人選,然后由項目管理組ApplicationMasterService告訴項目經理MRAppMaster,團隊一Node Manager手下有兩個人可以干活,團隊三Node Manager手下有三個人可以干活,團隊七手下有一個人可以干活。
于是項目經理MRAppMaster告知各團隊經理Node Manager,總部給我說了,你們說下各有N個人可以加入我的項目,開始干活了。
于是Node Manager將人分ContainerExecutor到項目組,先進行MapTask的任務,分到項目組的人不斷將MapTask的結果向項目經理匯報。
當項目經理發現MapTask的任務執行的差不多了,于是向總部申請人頭allocate來做匯總的工作ReduceTask。
做匯總工作的人也是從各團隊分配的,也是要不斷的將結果向項目經理匯報。
做匯總工作的人ReduceTask,會將MapTask的結果收集起來,做一定的處理,得到匯總的結果,寫入云盤HDFS。
當結果匯總完畢,任務就結束了,項目經理告訴客戶任務圓滿完成,也告訴總部項目我交差了finishApplicationMaster,可以開始干下一個項目了。
有人問,有什么項目需要這樣興師動眾呢?下面舉幾個例子。
大數據方法論之Nutch基于Map-Reduce的爬取方法
大數據方法論之PageRank的Map-Reduce計算
大數據方法論之網頁消重的Map-Reduce算法
總結
以上是生活随笔為你收集整理的通俗说基于Yarn的Map-Reduce过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通俗说Spark
- 下一篇: 转向AIOps之前,你应该做好哪些准备?