【深入浅出 Yarn 架构与实现】6-2 NodeManager 状态机管理 看热讯
NodeManager(NM)中的状态机分为三类:Application、Container和LocalizedResource,它们均直接或者间接参与维护一个应用程序的生命周期。
(相关资料图)
一、简介NodeManager(NM)中的状态机分为三类:Application、Container 和 LocalizedResource,它们均直接或者间接参与维护一个应用程序的生命周期。
当 NM 收到某个 Application 的第一个 container 启动命令时,它会创建一个「Application状态机」来跟踪该应用程序在该节点的状态;每个container都有一个独立的「container状态机」;Application 运行所需资源(jar,文件等)的下载过程则由「LocalizedResource状态机」维护和跟踪。二、三类状态机一)Application 状态机NM 上的 Application 维护的信息是 RM 端 Application 信息的一个子集,这有助于统一管理节点上同一个 Application 的所有 Container(例如记录每个 Application 在该节点上运行的 Container 列表,以及杀死一个 Application 的所有 Container 等)。实现这一功能的类是 nodemanager/containermanager/application/ApplicationImpl
,它维护了一个 Application 状态机。需要注意的是,NM 上 Application 的生命周期与 RM 上 Application 的生命周期是一致的。
// 截取 ApplicationImpl 中一部分状态机的代码 private static StateMachineFactory stateMachineFactory = new StateMachineFactory(ApplicationState.NEW) // Transitions from NEW state .addTransition(ApplicationState.NEW, ApplicationState.INITING, ApplicationEventType.INIT_APPLICATION, new AppInitTransition()) .addTransition(ApplicationState.NEW, ApplicationState.NEW, ApplicationEventType.INIT_CONTAINER, INIT_CONTAINER_TRANSITION) // Transitions from INITING state .addTransition(ApplicationState.INITING, ApplicationState.INITING, ApplicationEventType.INIT_CONTAINER, INIT_CONTAINER_TRANSITION) .addTransition(ApplicationState.INITING, EnumSet.of(ApplicationState.FINISHING_CONTAINERS_WAIT, ApplicationState.APPLICATION_RESOURCES_CLEANINGUP), ApplicationEventType.FINISH_APPLICATION, new AppFinishTriggeredTransition()) .addTransition(ApplicationState.INITING, ApplicationState.INITING, ApplicationEventType.APPLICATION_CONTAINER_FINISHED, CONTAINER_DONE_TRANSITION) .addTransition(ApplicationState.INITING, ApplicationState.INITING, ApplicationEventType.APPLICATION_LOG_HANDLING_INITED, new AppLogInitDoneTransition()) .addTransition(ApplicationState.INITING, ApplicationState.INITING, ApplicationEventType.APPLICATION_LOG_HANDLING_FAILED, new AppLogInitFailTransition()) .addTransition(ApplicationState.INITING, ApplicationState.RUNNING, ApplicationEventType.APPLICATION_INITED, new AppInitDoneTransition())
下面进行具体介绍:
1、基本状态NEW:状态机初始状态,每个 Application 对应一个状态机,而每个状态机的初始状态均为 NEW。INITING:Application 处于初始化状态,即创建日志目录和工作目录,创建 AppLogAggregator 对象等。FINISHING_CONTAINERS_WAIT:等待回收 Container 占用的资源时所处的状态。当 Application 状态机收到 FINISH_APPLICATION 事件后,会向各个 Container 发送 KILL 命令以回收它们占用的资源。APPLICATION_RESOURCES_CLEANINGUP:Application 的所有 Container 占用的资源被收回后,它将处于 APPLICATION_RESOURCES_CLEANINGUP 状态。RUNNING:Application 初始化(完成创建日志目录和工作目录,创建 AppLog-Aggregator 等工作)完成后,将进入 RUNNING 状态。FINISHED:Application 将占用的各种文件资源发送给文件删除服务 DeletionService(该服务会异步删除文件,避免产生性能问题)后,进入 FINISHED 状态,表示运行完成。2、基本事件INIT_APPLICATION:NM 收到来自某个 Application 的第一个 Container 后,会触发一个 INIT_APPLICATION 事件,同时使 Application 状态由初始状态 NEW 转换为 INITING。APPLICATION_INITED:Application 初始化完成后将触发一个 APPLICATION_INITED 事件。Application 初始化主要工作是初始化各类必需的服务组件(比如日志记录组件 LogHandler、资源状态追踪组件LocalResourcesTrackerImpl
等),供后续 Container 使用,通常由 Application 的第一个 Container 完成。FINISH_APPLICATION:NodeManager 收到 ResourceManager 发送的待清理的 Application 列表后,会向这些 Application 发送一个 FINISH_APPLICATION 事件APPLICATION_CONTAINER_FINISHED:该 Application 的一个 Container 运行完成(可能运行失败,也可能运行成功)后将触发一个 APPLICATION_CONTAINER_FINISHED 事件。APPLICATION_RESOURCES_CLEANEDUP:Application 所有 Container 占用的资源被清理完成(比如占用的临时目录)后将触发一个 APPLICATION_RESOURCES_CLEANEDUP 事件INIT_CONTAINER:NodeManager 收到 ApplicationMaster 通过 RPC 函数 ContainerManagementProtocol#startContainer
发送的启动 Container 的请求后,会触发一个 INIT_CONTAINER 事件。二)Container 状态机Container 状态机维护一个 container 运行的全部状态,包含 11 个状态和 10 个事件,实现类是 nodemanager/containermanager/container/ContainerImpl.java
。下面是状态转化的图:
下载是在从 init 状态转移到 downloading 状态时,会发一个 REQUEST_RESOURCE_LOCALIZATION
事件。这个事件是会发给 ResourceLocalizationService
,ResourceLocalizationService
根据资源的类型和可见性确定路径并下载他。下载是异步的(并且每个 application 对应着自己的下载线程),每个下载会对应一个 callable 的 FSDownload。状态机如下图所示,非常简单,不再具体介绍。
本篇文章对 NodeManager 中三类状态机进行了介绍,其主要都是维护一个应用程序的生命周期。无需强行记忆,知道有这三类状态机,遇到问题再对应查看即可。
参考文章:《Hadoop技术内幕:深入解析YARN架构设计与实现原理》
关键词:
NodeManager(NM)中的状态机分为三类:Application、Container和LocalizedResource,它们均直接或者间接参与维护一个应用程序的生命周期。
3月30日,A股五大上市险企2022年度业绩报告全部披露。2022年,中国
中新社南京4月3日电(记者杨颜慈)记者3日从中国科学院紫金山天文台获悉,在大地繁花似锦之际,天宇开启花样浪漫之旅。4月份,昴星团伴金星、水
日前,东莞市统计局发布《2023年1—2月东莞经济运行情况》,今年1—2月,东莞围绕制造业当家,有效落实各项推动经济高质量发展的政策措施,投
宋城演艺及实控人黄巧灵收监管函信息披露不完整
近日,湖北咸宁中院在审理一起猥亵儿童案中,发现通山县某小学教师邓某,曾在2014年因猥亵儿童行为被家长反映到学校。当时该县教育行政部门和
1、步兵就是走路的,骑兵是骑马的,当然是在以前。2、现在不一定了。本文到此分享完毕,希望对大家有所帮助。
3月31日下午,2023建发厦门马拉松赛举办新闻发布会,发布赛事相关筹备情况,为赛事合作伙伴进行授牌,并举行了优秀运动员
记者4月1日从云南铁路部门了解到,滇藏铁路全线重点控制性工程哈巴雪山隧道建设进入冲刺阶段。按照计划,滇藏铁路丽江至香格里拉段将于今年内
据多名目击者透露,事发时,这名战地记者正在参加一场活动,一名年轻女性观众向他赠送了一座小雕像。塔斯社援引俄执法部门的通报报道说,引发
借着《星之卡比:重返梦幻岛》发售之际,外媒采访到了游戏开发商HAL的游戏导演,对于星之卡比系列今后的
进军全球的卡萨帝:高端、出海双重驱动-驱动号_媒体平台
东山村曾是江西省“省级贫困村”,也是一个典型的“移民村”。全村427户1651人,来自16个省份,有108个姓氏在此定居。三面环水一面靠山的东山
1、你说的这个是一个古代器具上写的吧,其实这四个字是隶书文本,本来写的是乾隆年制。2、被一些人误认为
一、工伤纠纷被申请人如何答辩会根据申请人所提起的诉求进行答辩;被告要在收到起诉状副本后15日内提交答辩状。起草答辩状时要注意两点:1、有
家电在人们的居家生活中扮演着重要角色,其安全性及产品质量关乎安全,也关乎生活质量。近期,市场监管总局(标准委)批准发布了
“预计2023年汽车行业在稳经济促消费的政策作用下市场需求将有望延续回升走势,新能源汽车发展与汽车出口将延续良好态势,预计全年的汽车产销
挂牌起始价86546万元,楼面起价:4756元 平,上限价99046万元,上限楼面价5442元 平,商品住宅销售均价:≤14000元 平(毛坯)。
日本Columbia宣布推出Switch平台新作《漂亮公主魔法花园岛》,预定于7月6日发售,本作是一款箱庭模拟游戏,可以使用一点魔法的公主,这次将挑
株洲旗滨集团股份有限公司顺势转型升级,加快拓展光伏玻璃市场布局,投资30亿元在东山县成立漳州旗滨光伏新能源科技有限公司(简称“漳州旗滨光
3月31日,景顺长城科技创新混合A最新单位净值为1 1375元,累计净值为1 3335元,较前一交易日上涨1 29%。历史数据显示该基金近1个月上涨2 89%,
1、《Ratrace》是由ValentinHitz执导的电影,由ValentinHitz担任编剧,HaymonMa
最近小编看到大家都在讨论002451股票交一下多少,002411股票多钱相关
3月31日北向资金增持47 25万股吉林敖东。近5个交易日中,获北向资金增持的有3天,累计净增持18 33万股。近20个交易日中,获北向资金增持的有7
张继科和景甜曾在外界看来是一对金童玉女,文体的相结合收获了网友们满满的祝福,谁知两人突然分手了。景甜曾经现身活动,接受采访的时候情绪
Copyright 2015-2022 欧洲酒业网 版权所有 备案号:沪ICP备2022005074号-23 联系邮箱: 58 55 97 3@qq.com