舊的MapReduce架構(gòu)
JobTracker:負責資源管理,跟蹤資源消耗和可用性莺匠,作業(yè)生命周期管理(調(diào)度作業(yè)任務(wù)十兢,跟蹤進度,為任務(wù)提供容錯)
TaskTracker:加載或關(guān)閉任務(wù)期贫,定時報告認為狀態(tài)
此架構(gòu)會有以下問題:
JobTracker是MapReduce的集中處理點异袄,存在單點故障
JobTracker完成了太多的任務(wù)玛臂,造成了過多的資源消耗封孙,當MapReduce job 非常多的時候讽营,會造成很大的內(nèi)存開銷。這也是業(yè)界普遍總結(jié)出老Hadoop的MapReduce只能支持4000 節(jié)點主機的上限
在TaskTracker端橱鹏,以map/reduce task的數(shù)目作為資&##x6E90;的表示過于簡單,沒有考慮到cpu/ 內(nèi)存的占用情況挑围,如果兩個大內(nèi)存消耗的task被調(diào)度到了一塊糖荒,很容易出現(xiàn)OOM
在TaskTracker端,把資源強制劃分為map task slot和reduce task slot, 如果當系統(tǒng)中只有map task或者只有reduce task的時候蜘矢,會造成資源的浪費综看,也就集群資源利用的問題
總的來說就是單點問題和資源利用率問題
YARN架構(gòu)
YARN就是將JobTracker的職責進行拆分寓搬,將資源管理和任務(wù)調(diào)度監(jiān)控拆分成獨立#x7ACB;的進程:一個全局的資源管理和一個每個作業(yè)的管理(ApplicationMaster) ResourceManager和NodeManager提供了計算資源的分配和管理,而ApplicationMaster則完成應(yīng)用程序的運行
ResourceManager:全局資源管理和任務(wù)調(diào)度
NodeManager:單個節(jié)點的資源管理和監(jiān)控
ApplicationMaster:單個作業(yè)的資源管理和任務(wù)監(jiān)控
Container:資源申請的單位和任務(wù)運行的容器
架構(gòu)對比
YARN架構(gòu)下形成了一個通用的資源管理平臺和一個通用的應(yīng)用計算^#x5E73;臺镣典,避免了舊架構(gòu)的單點問題和資源利用率問題唾琼,同時也讓在其上運行的應(yīng)用不再局限于MapReduce形式
YARN基本流程
1. Job submission
從ResourceManager中獲取一個Application ID 檢查作業(yè)輸出配置锡溯,計算輸入分片 拷貝作業(yè)資源(job jar、配置文件祭饭、分片信息)到HDFS倡蝙,以便后面任務(wù)的執(zhí)行
2. Job initialization
ResourceManager將作業(yè)遞交給Scheduler(有很多調(diào)度算法,一般是根據(jù)優(yōu)先級)Scheduler為作業(yè)分配一個Container,ResourceManager就加載一個application master process并交給NodeManager管理ApplicationMaster主要是創(chuàng)建一系列的監(jiān)控進程來跟蹤作業(yè)的進度品山,同時獲取輸入分片烤低,為每一個分片創(chuàng)建一個Map task和相應(yīng)的reduce task Application Master還決定如何運行作業(yè),如果作業(yè)很衅四佟(可配置),則直接在同一個JVM下運行
3. Task assignment
ApplicationMaster向Resource Manager申請資源(一個個的Container魄懂,指定任務(wù)分配的資源要求)一般是根據(jù)data locality來分配資源
4. Task execution
ApplicationMaster根據(jù)ResourceManager的分配情況闯第,在對應(yīng)的NodeManager中啟動Container 從HDFSN#x4E2D;讀取任務(wù)所需資源(job jar,配置文件等)填帽,然后執(zhí)行該任務(wù)
5. Progress and status update
定時將任務(wù)的進度和狀態(tài)報告給ApplicationMaster Client定時向ApplicationMaster獲取整個任務(wù)的進度和狀態(tài)
6. Job completion
Client定時檢查整個作業(yè)是否完成 作業(yè)完成后咙好,會清空臨時文件、目錄等