1. MR程序創(chuàng)建成功后,需要提交到HDFS上運行,MR程序提交到客戶端所在的節(jié)點。
2. YarnRunner向ResourceManager申請?zhí)峤灰粋€Application。
3. ResourceManager返回應(yīng)用程序需要提交的資源路徑和ApplicationId。
4. YarnRunner提交資源到HDFS上,包含Job.xml、Job.split、xx.jar,資源提交完畢之后,向ResourceManager申請一個運行MRApplicationMaster,一個Application對應(yīng)一個ApplicationMaster。
5. ResourceManager把提交的Job初始化成一個Task,放入Yarn的調(diào)度隊列中去。
6. 當執(zhí)行到此Task時,其中一臺NodeManager領(lǐng)取此任務(wù),然后在此NodeManager上創(chuàng)建一個Container并創(chuàng)建一個MRApplicationMaster,然后下載HDFS上的計算資源(Job.xml、Job.split、xx.jar)到此NodeManager上。
7. MRApplicationMaster向ResourceManager申請運行MapTask的資源,同時ResourceManager向另外兩臺NodeManager分配執(zhí)行MapTask的任務(wù),這兩臺NodeManager分別創(chuàng)建Container,然后MRApplicationMaster將啟動腳本發(fā)送給這兩臺NodeManager,啟動MapTask任務(wù)。
8. 當MapTask執(zhí)行完畢之后,MRApplicationMaster向ResourceManager申請執(zhí)行ReduceTask的資源,ResourceManager分配資源創(chuàng)建Container,Container下載xx.jar到此Container中,MRApplicationMaster啟動此任務(wù)。
9. ReduceTask獲取MapTask分區(qū)數(shù)據(jù),進行計算。
10. 當ReduceTask運行完畢之后,通知MRApplicationMaster,注銷ReduceTask的資源,MRApplicationMaster向ResourceManager申請注銷自己。