董西城《深入解析YARN》-第5章 RespourceManager剖析

5.1 Resourcemanager 概述

image.png

❑与客户端交互,处理来自客户端的请求;
❑启动和管理ApplicationMaster,并在它运行失败时重新启动它;
❑管理NodeManager,接收来自NodeManager的资源汇报信息,并向NodeManager下达管理指令(比如杀死Container等);
❑资源管理与调度,接收来自ApplicationMaster的资源申请请求,并为之分配资源。

5.2 Resourcemanager 内部架构

RM内部架构
5.2 用户交互模块

5.2.1 ClientRMServiceClientRMService是一个RPC Server,为来自客户端的各种RPC请求提供服务。从实现角度看,它是一个实现了ApplicationClientProtocol协议的服务,其定义如下:

5.2.2 AdminService与ClientRMService类似,AdminService也是一个RPC Server,但它的服务对象是管理员。在YARN中,管理员列表由属性yarn.admin.acl指定(在yarn-site.xml中设置),默认情况下,属性值为“*”,表示所有用户都是管理员。从实现角度看,它是一个实现了ResourceManagerAdministrationProtocol协议的服务,其定义如下

5.3 ApplicationMaster管理
image.png
  • 步骤1 用户向YARN ResourceManager提交应用程序,ResourceManager收到提交请求后,先向资源调度器申请用以启动ApplicationMaster的资源,待申请到资源后,再由ApplicationMasterLauncher与对应的NodeManager通信,从而启动应用程序的ApplicationMaster。
  • 步骤2 ApplicationMaster启动完成后,ApplicationMasterLauncher会通过事件的形式,将刚刚启动的ApplicationMaster注册到AMLivelinessMonitor,以启动心跳监控。
  • 步骤3 ApplicationMaster启动后,先向ApplicationMasterService注册,并将自己所在host、端口号等信息汇报给它。
  • 步骤4 ApplicationMaster运行过程中,周期性地向ApplicationMasterService汇报“心跳”信息(“心跳”信息中包含想要申请的资源描述)。
  • 步骤5 ApplicationMasterService每次收到ApplicationMaster的心跳信息后,将通知AMLivelinessMonitor更新该应用程序的最近汇报心跳的时间。
  • 步骤6 当应用程序运行完成后,ApplicationMaster向ApplicationMasterService发送请求,注销自己。
  • 步骤7 ApplicationMasterService收到注销请求后,标注应用程序运行状态为完成,同时通知AMLivelinessMonitor移除对它的心跳监控。

AM运行过程中,需要周期性地通过RPC函数ApplicationMasterProtocol#allocate与RM通信主要有以下三个作用:

❑请求资源;
❑获取新分配的资源;
❑形成周期性心跳,告诉RM自己还活着。

5.4 NodeManager管理

(1)NMLivelinessMonitor该服务周期性遍历集群中所有NodeManager,如果一个NodeManager在一定时间(可通过参数yarn.nm.liveness-monitor.expiry-interval-ms配置,默认为10min)内未汇报心跳信息,则认为它死掉了,它上面所有正在运行的Container将被置为运行失败
(2)NodesListManagerNodesListManager管理exlude(类似于黑名单)和inlude(类似于白名单)节点列表
(3)ResourceTrackerServiceResourceTrackerService实现了RPC协议ResourceTracker,负责处理来自各个NodeManager的请求,请求主要包括注册和心跳两种,

5.5 Application管理

(1)ApplicationACLsManagerApplicationACLsManager负责管理应用程序的访问权限,包含两部分权限:查看权限和修改权
(2)RMAppManagerRMAppManager负责应用程序的启动和关闭
(3)ContainerAllocationExpirer当一个AM获得一个Container后,YARN不允许AM长时间不对其使用

5.6 状态机管理

在YARN ResourceManager内部,共有4类状态机,分别是RMApp、RMAppAttempt、RMContainer和RMNode。其中,前2类状态机维护了一个应用程序相关的生命周期,包括Application生命周期、一次运行尝试的生命周期;RMContainer则维护了分配出去的各个资源的使用状态;RMNode维护了一个NodeManager(一个节点上可以有多个NodeManager)的生命周期


image.png

Application Attempt的生命周期与ApplicationMaster的生命周期基本上是一致的:一个Application内部所有任务均由ApplicationMaster维护和管理,ApplicationMaster本身需要占用一个Container,而这个Container由ResourceManager为其申请和启动。一旦ApplicationMaster成功启动,它就会与ResourceManager通信,为它内部的任务申请Container。如果ApplicationMaster重新启动,则意味着一个新的Application Attempt被启动,换句话说,一个Application Attempt的“生死存亡”与ApplicationMaster的“命运”紧紧绑定在一起。

5.6.1 RMApp状态机

RMApp是ResourceManager中用于维护一个Application生命周期的数据结构,它的实现是RMAppImpl类,该类维护了一个Application状态机,记录了一个Application可能存在的各个状态(RMAppState)以及导致状态间转换的事件(RMAppEvent)

image.png

image.png
5.6.2 RMAppAttempt状态机
image.png

image.png
5.6.3 RMContainer状态机
image.png

image.png
5.6.4 RMNode状态机

RMNode是ResourceManager中用于维护一个节点生命周期的数据结构,它的实现是RMNodeImpl类,该类维护了一个节点状态机,记录了节点可能存在的各个状态以及导致状态间转换的事件。当某个事件发生时,RMNodeImpl会根据实际情况进行节点状态转移,同时触发一个行为


image.png

image.png

5.7 几个常见行为分析

5.7.1 启动ApplicationMaster
ApplicationMaster启动流程
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容