MapRdeuce&Yarn的工作機制(YarnChild是什麼)

                                          MapRdeuce&Yarn的工作機制

一幅圖解決你所有的困惑


那天在集羣中跑一個MapReduce的程序時,在機器上jps了一下發現了每臺機器中有好多個YarnChild。困惑什麼時YarnChild,當程序跑完後就沒有了,神奇。後來百度了下,又問問了別的大佬。原來是這樣

什麼是YarnChild:

答:MrAppmaster運行程序時向resouce manager 請求的maptask/reduceTask。也是運行程序的容器。其實它就是一個運行程序的進程。

圖解說下:

hadoop1版本的MapRdeuce&Yarn的工作機制

        1.客戶端發來request。JobTracker接受request。

        2.JobTracker將客戶端發來的request任務分配給TaskTracker

        3.然後TaskTracker生成maptask運行程序

        4.JobTracker不僅要負責資源調度,還要負責監控應運運算流程。

       缺點:耦合的高,當JobTracker死掉時,所有的客戶端的請求任務都會死掉,而hadoop2則避免了這個問題,它中的對象多,但都各司其職,耦合的低,運行效率快。

hadoop2版本的MapRdeuce&Yarn的工作機制

        1.客戶端發出請求,YARNRUNNER接受,生成一個代理對象,向resource manager請求一個application

        2.resource manager返回application的提交路徑和application_id(這裏使用id是應爲可能有多個任務用id來區別)

        3.YARNRUNNER向hdfs提交job運行所需要的文件(application,job.split,job,.xml,job.jar)

        4.向resource manager 報告提交完成,申請一個mrAppMaster

        5.將用戶的請求初始化成一個task,將task放到隊列中,等待node manager來領取task任務。(這其中使用了調度策略,節約資源,如:Fair Capacity等等)

        6.node manager領取到任務,

        7.生成一個Container,然後在hdfs中下載運行資源。

        8.向resource manager申請運行maptask的容器(帶着任務,split,運行資源.的元數據..)

        9.其他的node manager領取到resouce manager的任務,創建容器,此時的Container則是YarnChild,也是maptask,然後maptask在hdfs下載所要運行的資源。

        10.MrAppMaster發送程序腳本運行jar,當maptask中的程序運行完成後,maptask的資源被resource manager回收了,但跑完的資源在node manager中。

        11.當maptask運行完成後MRAppmaster又向resorce manager申請 reduce task(至於它申請多少個是由它有多少個map task決定的),然後根據忙於不忙node manager領取任務.創建container,

        12.redcuetask 向map獲取相應分區的數據資源,運行文件。

        13.application運行完畢後MrAppmaster會向resource manager註銷自己

        

總結:Yarn:資源調度系統(jar/xml/cpu/IO)

            負責程序運行所需資源的分配回收等任務調度,於程序運行內部即使完全無關,所以yarn只是一個寺院調度平臺,mapreudce 則是一個運行技術框架,那別的運算框架也可以使用yarn,如:spark/storm/flink....

        

posted on 2018-07-06 08:40 meiLinYa 閱讀(...) 評論(...) 編輯 收藏
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章