YARN 服务库与事件库

YARN通过服务库对长期对象进行管理,分为NOTINITED, INITED, STARTED, STOPPED四个状态,并允许服务组合管理。事件库采用事件驱动并发模型,增强系统并发性,处理过程由中央异步调度器 AsyncDispatcher 负责。ResourceManager, NodeManager等核心服务也是事件调度器。通过定义事件和处理器,实现服务和事件的交互。文章通过一个简化版MRAppMaster实例展示了服务库和事件库的使用方法。" 91364402,7375770,Unity 文字超框解决方案:自动显示省略号,"['Unity', 'UI设计', '图形渲染']
摘要由CSDN通过智能技术生成

服务库

对于生命周期较长的对象, YARN 采用了基于服务的对象管理模型对其进行管理, 该模型主要有以下几个特点。

  1. 将每个被服务化的对象分为 4 个状态: NOTINITED(被创建)、INITED(已初始化)、 STARTED(已启动)、STOPPED(已停止)。
  2. 任何服务状态变化都可以触发另外一些动作。
  3. 可通过组合的方式对任意服务进行组合, 以便进行统一管理。

YARN 中关于服务模型的类图(位于包 org.apache.hadoop.service 中) 如图所示:

这里写图片描述

在这个图中, 我们可以看到, 所有的服务对象最终均实现了接口 Service,它定义了最基本的服务初始化、启动、停止等操作,而 AbstractService 类提供了一个最基本的 Service 实现。YARN 中所有对象,如果是非组合服务,直接继承 AbstractService 类即可,否则需继承 CompositeService。比如,对于ResourceManager 而言,它是一个组合服务,它组合了各种服务对象,包括 ClientRMService、ApplicationMasterLauncher、ApplicationMasterService 等。
在 YARN 中, ResourceManager 和 NodeManager 属于组合服务, 它们内部包含多个单一服务和组合服务, 以实现对内部多种服务的统一管理。

事件库

YARN 采用了基于事件驱动的并发模型, 该模型能够大大增强并发性, 从而提高系统整体性能。 为了构建该模型, YARN 将各种处理逻辑抽象成事件和对应事件调度器, 并将每类事件的处理过程分割成多个步骤, 用有限状态机表示。 YARN 中的事件处理模型可概括为图所示。

这里写图片描述

整个处理过程大致为:处理请求会作为事件进入系统,由中央异步调度器(AsyncDispatcher)负责传递给相应事件调度器(Event Handler)。该事件调度器可能将该事件转发给另外一个事件调度器,也可能交给一个带有有限状态机的事件处理器,其处理结果也以事件的形式输出给中央异步调度器。而新的事件会再次被中央异步调度器转发给下一个事件调度器,直至处理完成(达到终止条件)。

在 YARN 中,所有核心服务实际上都是一个中央异步调度器,包括 ResourceManager、NodeManager、 MRAppMaster(MapReduce 应用程序的 ApplicationMaster)等,它们维护了事先注册的事件与事件处理器,并根据接收的事件类型驱动服务的运行.YARN 中事件与事件处理器类的关系(位于包 org.apache.hadoop.yarn.event 中)如图所示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值