mapreduce程式在yarn上執行的流程
自己學習mapreduce的一點簡單的心得
1.當我們在準備在yarn上執行一個mapreduce程式時,job.waitForCompletion()就會去Resource Manager發出一個請求,請求執行一個m r程式;
2.hdfs在獲得這個請求之後,會去分配一個jobid和一個job資源提交的路徑;
3.接下來就是準備向HDFS提交所需要的資源,分別是所需要的jar包以及計算切片後得到的切片資訊的list資訊;
4.準備好資源後,告知R M,向其申請一個容器來執行MRAPPMaster程序;
5.MRAPPMaster在得到請求後,會發佈一個建立相應容器的任務,告訴相應的nodemanager,讓其建立相應的容器;
6.建立好容器之後,nodemanager會去HDFS上下載啟動MRAPPMaster需要的程式檔案;
7.程式檔案準備好之後,hdfs會發送一個啟動MRAPPMaster的shell命令,然後預先建立了MRAPPMaster容器的nodemanager會執行這個shell命令;
8.此時,MRAPPMaster會去想R M請求申請若干容器用來給相應的nodemanager來啟動相應的yarnchild,這裡容器的數量取決於切片數量以及reducetask來決定;
9.接下來,相應的nodemanager就會去建立相應的容器來準備啟動yarnchild程式;
10.MRAPPMaster傳送啟動yarnchild程式的shell命令,相應準備好容器的nodemanager就會執行shell命令啟動yarnchild;
11.待到最後一個reducetask執行完畢之後,MRAPPMaster會向Resource Manager彙報job執行完畢並且退出。資源會被nodemanager回收。
下面有詳細圖解 ,只是小白的個人理解,如有不對之處,敬請賜教。