YARN的服务库和事件库

一 服务库

对于生命周期较长的对象,YARN采用基于服务的对象管理模型对其管理,特点如下:

>每一个被服务化的对象分为四个状态:NOTINITED(被创建,还未初始化),INITED(已初始化),SATRTED(已启动),STOPPED(已停止)

>任何服务状态的变化,都可以触发一些动作

>可通过组合方式对任意服务进行组合

 

总接口:Service

抽象服务类:AbstractService实现了部分Service接口的方法

组合服务类:CompositeService,如果是组合服务,需要继承CompositeService,比如ResourceManager是一个组合服务,他组合了各种服务对象,比如ClientRMService,ApplicationMasterLauncher,

ApplicationMasterService等

二 事件库

YARN采用了基于事件的并发模型,该模型能够大大增强并发性,从而提高系统的整体性能。

YARN将各种处理逻辑抽象成事件和对应事件调度器,并将每类事件处理过程分割成多个步骤,用有限状态机表示


处理请求作为事件进入系统

中央异步调度器AsyncDipatcher负责传递给相应的事件调度器Event

Handler,这个事件调度器可能将该事件转发给另外一个事件调度器,也可能交给一个带有有限状态机的事件处理器

YANR中,所有核心服务实际上都是由一个中央异步调度器。包括

ResourceManager, Node Manager, MR Application Master等,他们维护了事先注册的事件和事件处理器,并根据接收的事件类型驱动服务的运行

 

当使用YARN事件库的时候步骤

1、定义一个中央异步调度器AsyncDispatcher,负责事件的处理和转发

2、根据实际业务需求定义一系列的事件Event与事件处理器EventHandler,并注册到中央异步调度器AsyncDispatcher,以实现事件统一管理和调度

 

举个例子:MRAppMaster

内部包含一个中央异步调度器ASyncDispatcher,并注册TaskAttemptEvent/TaskAttemptImpl、TaskEvent/TaskImpl、JobEvent/

JobImpl等一系列事件、事件处理器

 

 

三 状态机库

状态机由一组状态组成,这些状态分为三类:初始状态、中间状态、和最终状态。

从初始状态开始运行,经过一系列中间状态,达到最终状态并退出。

在一个状态机中,每一个状态都可以接受一组特定的事件,并根据具体的事件类型转换到另一个状态。

 

YARN中,每一种状态由四个元素组成:

转换前状态preState:

转换后状态:postState

事件:event

回调函数:hook

三种状态转换方式:


表示:状态机在preState状态下,接受到Event事件后,执行函数状态转移函数hook,执行完后,将当前的状态转换为postState

 

2、一个初始状态,一个事件,然后多种状态


表示状态在preState状态下,接受到Event事件后,执行函数hook

返回多种状态

3、一个初始状态,多个事件,一个最终状态


表示:在preState状态下,接收到多个事件后,执行状态转移函数hook,返回一个最终状态


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值