YARN是什么

為了實(shí)現(xiàn)一個(gè)Hadoop集群的集群共享、可伸縮性和可靠性,并消除早期MapReduce框架中的JobTracker性能瓶頸,開源社區(qū)引入了統(tǒng)一的資源管理框架YARN。

YARN是將JobTracker的兩個(gè)主要功能(資源管理和作業(yè)調(diào)度/監(jiān)控)分離,主要方法是創(chuàng)建一個(gè)全局的ResourceManager(RM)和若干個(gè)針對(duì)應(yīng)用程序的ApplicationMaster(AM)。

說明:應(yīng)用程序是指傳統(tǒng)的MapReduce作業(yè)或作業(yè)的DAG(有向無環(huán)圖)。

YARN結(jié)構(gòu)

YARN分層結(jié)構(gòu)的本質(zhì)是ResourceManager。這個(gè)實(shí)體控制整個(gè)集群并管理應(yīng)用程序向基礎(chǔ)計(jì)算資源的分配。ResourceManager將各個(gè)資源部分(計(jì)算、內(nèi)存、帶寬等)精心安排給基礎(chǔ)NodeManager(YARN的每節(jié)點(diǎn)代理)。ResourceManager還與Application Master一起分配資源,與NodeManager一起啟動(dòng)和監(jiān)視它們的基礎(chǔ)應(yīng)用程序。在此上下文中,Application Master承擔(dān)了以前的TaskTracker的一些角色,ResourceManager承擔(dān)了JobTracker的角色。

Application Master管理一個(gè)在YARN內(nèi)運(yùn)行的應(yīng)用程序的每個(gè)實(shí)例。Application Master負(fù)責(zé)協(xié)調(diào)來自ResourceManager的資源,并通過NodeManager監(jiān)視容器的執(zhí)行和資源使用(CPU、內(nèi)存等的資源分配)。

NodeManager管理一個(gè)YARN集群中的每個(gè)節(jié)點(diǎn)。NodeManager提供針對(duì)集群中每個(gè)節(jié)點(diǎn)的服務(wù),從監(jiān)督對(duì)一個(gè)容器的終生管理到監(jiān)視資源和跟蹤節(jié)點(diǎn)健康。MRv1通過插槽管理Map和Reduce任務(wù)的執(zhí)行,而NodeManager管理抽象容器,這些容器代表著可供一個(gè)特定應(yīng)用程序使用的針對(duì)每個(gè)節(jié)點(diǎn)的資源。