一、MR1的架構(gòu)設(shè)計(jì)
1. Client: 客戶端
2. JobTracker: 主要負(fù)責(zé)資源監(jiān)控管理和作業(yè)調(diào)度虑乖。
? ? a.監(jiān)控所有TaskTracker 與job的健康狀況,一旦發(fā)現(xiàn)失敗,就將相應(yīng)的任務(wù)轉(zhuǎn)移到其他節(jié)點(diǎn);
? ? b.同時(shí)JobTracker會跟蹤任務(wù)的執(zhí)行進(jìn)度懦趋、資源使用量等信息,并將這些信息告訴任務(wù)調(diào)度器,而調(diào)度器會在資源出現(xiàn)空閑時(shí),選擇合適的任務(wù)使用這些資源.
3. TaskTracker:是JobTracker與Task之前的橋梁
? ? a.從JobTracker接收并執(zhí)行各種命令:運(yùn)行任務(wù)、提交任務(wù)疹味、 Kill任務(wù)仅叫、重新初始化任務(wù);
? ? b.周期性地通過心跳機(jī)制,將節(jié)點(diǎn)健康情況和資源使用情況、各個(gè)任務(wù)的進(jìn)度和狀態(tài)等匯報(bào)給JobTracker.
4. Task Scheduler: 任務(wù)調(diào)度器
5. Map Task: 映射任務(wù)
6. Reduce Task: 歸約任務(wù)
二佛猛、MR2的架構(gòu)設(shè)計(jì)
Container(容器):YARN組件將一定的內(nèi)存惑芭、cpu等資源抽象成一個(gè)小房間,專門用來運(yùn)行任務(wù)
1:用戶向YARN中提交應(yīng)用程序,其中包括ApplicationMaster程序、啟動ApplicationMaster的命令幻锁、用戶程序等凯亮。
2:ResourceManager為該應(yīng)用程序分配第一個(gè)Container, 并與對應(yīng)的Node-Manager通信哄尔,要求它在這個(gè)Container中啟動應(yīng)用程序的ApplicationMaster假消。
3:ApplicationMaster首先向ResourceManager注冊(可通過web界面查看狀態(tài)),這樣用戶可以直接通過ResourceManage查看應(yīng)用程序的運(yùn)行狀態(tài)岭接,然后它將為各個(gè)任務(wù)申請資源富拗,并監(jiān)控它的運(yùn)行狀態(tài),直到運(yùn)行結(jié)束鸣戴,即重復(fù)步驟4~7啃沪。
4:ApplicationMaster采用輪詢的方式通過RPC協(xié)議向ResourceManager申請和領(lǐng)取資源。
5:一旦ApplicationMaster申請到資源后窄锅,便與對應(yīng)的NodeManager(也有可能是本身)通信创千,要求它啟動任務(wù)。
6:NodeManager為任務(wù)設(shè)置好運(yùn)行環(huán)境(包括環(huán)境變量入偷、 JAR包追驴、二進(jìn)制程序等)后,將任務(wù)啟動命令寫到一個(gè)腳本中疏之,并通過運(yùn)行該腳本啟動任務(wù)殿雪。
7:各個(gè)任務(wù)通過某個(gè)RPC協(xié)議向ApplicationMaster匯報(bào)自己的狀態(tài)和進(jìn)度,以讓ApplicationMaster隨時(shí)掌握各個(gè)任務(wù)的運(yùn)行狀態(tài)锋爪,從而可以在任務(wù)失敗時(shí)重新啟動任務(wù)冠摄。在應(yīng)用程序運(yùn)行過程中,用戶可隨時(shí)通過RPC向ApplicationMaster查詢應(yīng)用程序的當(dāng)前運(yùn)行狀態(tài)几缭。
8:應(yīng)用程序運(yùn)行完成后, ApplicationMaster向ResourceManager注銷并關(guān)閉自己沃呢。
#當(dāng)用戶向YARN中提交一個(gè)應(yīng)用程序后年栓, YARN將分兩個(gè)階段運(yùn)行該應(yīng)用程序:
a. 第一個(gè)階段是啟動ApplicationMaster;
b. 第二個(gè)階段是由ApplicationMaster創(chuàng)建應(yīng)用程序薄霜,為它申請資源某抓,并監(jiān)控它的整個(gè)運(yùn)行過程,直到運(yùn)行完成惰瓜。