?? YARN 是一個(gè)資源調(diào)度平臺(tái),負(fù)責(zé)為運(yùn)算程序提供服務(wù)器運(yùn)算資源,相當(dāng)于一個(gè)分布式的操作系統(tǒng)平臺(tái),而 MapReduce 等運(yùn)算程序則相當(dāng)于運(yùn)行于操作系統(tǒng)之上的應(yīng)用程序。
創(chuàng)新互聯(lián)專注于肥城網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供肥城營(yíng)銷型網(wǎng)站建設(shè),肥城網(wǎng)站制作、肥城網(wǎng)頁(yè)設(shè)計(jì)、肥城網(wǎng)站官網(wǎng)定制、小程序開(kāi)發(fā)服務(wù),打造肥城網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供肥城網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
?? - JobTracker是集群的事務(wù)的集中處理,存在單點(diǎn)故障
? - JobTracker需要完成得任務(wù)太多,既要維護(hù)job的狀態(tài)又要維護(hù)job的task的狀態(tài),造成資源消耗過(guò)多
? - 在 TaskTracker 端,用Map/Reduce Task作為資源的表示過(guò)于簡(jiǎn)單,沒(méi)有考慮到CPU。內(nèi)存,等資源情況,將兩個(gè)需要大消耗量的Task調(diào)度到一起,很容易出現(xiàn)OOM。
? - 把資源強(qiáng)制劃分為 Map/Reduce Slot,當(dāng)只有 MapTask 時(shí),TeduceSlot 不能用;當(dāng)只有 ReduceTask 時(shí),MapSlot 不能用,容易造成資源利用不足。
??MRv2 最基本的想法是將原 JobTracker 主要的資源管理和 Job 調(diào)度/監(jiān)視功能分開(kāi)作為兩個(gè)單獨(dú)的守護(hù)進(jìn)程。有一個(gè)全局的ResourceManager(RM)和每個(gè) Application 有一個(gè)ApplicationMaster(AM),Application 相當(dāng)于 MapReduce Job 或者 DAG jobs。ResourceManager和 NodeManager(NM)組成了基本的數(shù)據(jù)計(jì)算框架。ResourceManager 協(xié)調(diào)集群的資源利用,任何 Client 或者運(yùn)行著的 applicatitonMaster 想要運(yùn)行 Job 或者 Task 都得向 RM 申請(qǐng)一定的資源。ApplicatonMaster 是一個(gè)框架特殊的庫(kù),對(duì)于 MapReduce 框架而言有它自己的 AM 實(shí)現(xiàn),
用戶也可以實(shí)現(xiàn)自己的 AM,在運(yùn)行的時(shí)候,AM 會(huì)與 NM 一起來(lái)啟動(dòng)和監(jiān)視 Tasks。
ResourceManager:ResoueceMananer是基于應(yīng)用程序?qū)嘿Y源的需求進(jìn)行調(diào)度的yarn集群的主控制節(jié)點(diǎn),負(fù)責(zé)協(xié)調(diào)和管理整個(gè)集群,相應(yīng)用戶提交的不同的類型的應(yīng)用程序,解析、調(diào)度、監(jiān)控等工作。ResourceManager會(huì)為每一個(gè)application啟動(dòng)一個(gè)MRappmaster,并且MRappmaster分散在各個(gè)nodemanager上。
ResourceManager只要有兩個(gè)部分組成:
?- 應(yīng)用程序管理器(ApplicationsManager, ASM): 管理和監(jiān)控所有的應(yīng)用程序的MRappmaster,啟動(dòng)應(yīng)用程序的MRappmaster,以及MRappmaster失敗重啟
?- 調(diào)度器(Scheduler):底層是一個(gè)隊(duì)列,負(fù)責(zé)應(yīng)用程序的執(zhí)行時(shí)間和順序
??? - FIFO(先進(jìn)先出的隊(duì)列):先提交的任務(wù)先執(zhí)行 后提交的后執(zhí)行 內(nèi)部只維護(hù)一個(gè)隊(duì)列
??? - Fair 公平調(diào)度器:所有的計(jì)算任務(wù)進(jìn)行資源的平分,全局中如果只有一個(gè)job那么當(dāng)前的job占用所有的資源
??? - Capacity(計(jì)算能力調(diào)度器):可以根據(jù)實(shí)際的job任務(wù)的大小,進(jìn)行資源的配置
NodeManager:Nodemanager是yarn集群中正真資源的提供者,也是真正執(zhí)行應(yīng)用程序的容器的提供者,監(jiān)控應(yīng)用程序的資源情況(cpu、網(wǎng)絡(luò)、IO、內(nèi)存)。并通過(guò)心跳向集群的主節(jié)點(diǎn)ResourceManager 進(jìn)行匯報(bào)以及更新自己的健康狀況。同時(shí)也會(huì)監(jiān)督container的生命周期管理,監(jiān)控每個(gè)container的資源情況
MRAppMaster:為當(dāng)前的job的mapTask和reduceTask向ResourceManager 申請(qǐng)資源、監(jiān)控當(dāng)前job的mapTask和reduceTask的運(yùn)行狀況和進(jìn)度、為失敗的MapTask和reduceTask重啟、負(fù)責(zé)對(duì)mapTask和reduceTask的資源回收。
Container:Container 是一個(gè)容器,一個(gè)抽象的邏輯資源單位。容器是由ResourceManager Scheduler 服務(wù)動(dòng)態(tài)分配的資源構(gòu)成的,它包括該節(jié)點(diǎn)上的一定量的cpu、網(wǎng)絡(luò)、IO、內(nèi)存,MapReduce 程序的所有 Task 都是在一個(gè)容器里執(zhí)行完成的。
hadoop 1.x: