在hadoop1.0版本以前我們的Mapreduce是被當作資源調度和計算框架來使用的,成為了hadoop運行生態圈的瓶頸,所以在hadoop2.0版本以上引入了yarn的概念,使Mapreduce完全成為分布式計算框架,而Yarn成為了分布式資源調度。雖然mapreduce處理速度很慢,IO操作會很多,不過這是我們步入Spark的必經之路,也是了解大數據生態圈不可缺少的成分。
下面就是針對job提交,yarn所做出的反應。

(我們的jar包中包括了許許多多的信息,其中重要的是:Mapper、Reducer、ApplicationMaster)
1.將job提交給ResourcemManager(后面用RM代替),RM會給他分配一個jobID
2.RM會給客戶端返回一個JobID和路徑的信息
3.客戶端根據這個信息,將jar包存儲在HDFS中
4.提交job給RM,RM中存在FIFO機制,如果前面有正在運行的Job,則放入FIFO進行等待,直到輪到此Job
5.申請開啟AM(ApplicationMaster),RM會找到一個NM(NodeManager)給他continer,用來啟動AM,ND開啟AM(其實5和6之間存在一種AM向RM注冊的行為,這里不做太多講解,只需懂基本流程即可)
6. AM向RM申請Task的執行資源,用來運行Task
7.RM根據AM的信息和每個節點的資源利用情況進行Task的資源分配
8.AM去每個Task所在的節點上通知NM去開啟此continer
(后續一點步驟:
9.task啟動會跟AM進行注冊,AM時刻監控Task的運行情況,知道收到Task運行完成為止)
以上便是Mapreduce的job提交流程。
