一 服务库

对于生命周期较长的对象,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,返回一个最终状态

YARN的服务库和事件库相关推荐

  1. 利用epoll写一个迷你的网络事件库

    epoll是linux下高性能的IO复用技术,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率.另一点原因就是获取 ...

  2. 发布一个开源的c++网络事件库【转载Zark@cppthinker.com】

    Chaos是一个基于Linux平台, reactor模式的网络事件库, 目前仅支持TCP传输协议, 仅在x86_64下编译, 并遵循3-clause BSD开源协议. 在使用上, 可以说它很像boos ...

  3. 《Redis官方文档》事件库

    究竟为什么需要一个事件库呢?让我们通过下面一系列问答来了解为什么. 问:你希望网络服务器持续不断地做什么事? 答:监听端口上进来的连接请求并接收它们. 问:调用套接字的Accept方法产生一个描述符, ...

  4. 分布式微服务下的跨库查询解决思路

    分布式微服务下的跨库查询解决思路 参考文章: https://mp.weixin.qq.com/s/_DPunClmcTDJLcC3S9Y4og 微服务架构下,解决数据库跨库查询的一些思路 看了文章后 ...

  5. ktouch移动端事件库

    最近闲来无事,写了个移动端的事件库,代码贴在下面,大家勿拍. 1 /** 2 @version 1.0.0 3 @author gangli 4 @deprecated 移动端触摸事件库 5 */ 6 ...

  6. C++库介绍-标准库、类库

    目录: 1.标准库 2.GUI库 3.网络通信 4.XML 5.科学计算 6.游戏开发 7.线程 8.序列化 9.字符串 10.综合 11.其他 12.C++重要人物网站 C++类库介绍 再次体现了C ...

  7. [转载] JAVA从菜鸟【入门】到新手【实习】一一一一Python 内置函数,标准库与第三方库(拓展库),常用框架

    参考链接: copyreg -注册pickle支持的函数 掌握了python的基本语法和面向对象的设计思想后是学习了程序设计的"使用"规则, 具体实现和调用要依赖"标准库 ...

  8. 微软疑淡化邮件服务被黑事件;DOTA2 AI 2:0 完胜世界冠军

    (给技术最前线加星标,每天看技术热点) 转自:开源中国.solidot.cnBeta.腾讯科技.快科技等 [技术资讯] 0.微软疑淡化邮件服务被黑事件,知情者:实际情况更严重 据美国科技媒体Mothe ...

  9. 拖库还是撞库?网易邮箱罗生门

    从乌云言之凿凿的报告和网友的如潮控诉来看,网易邮箱信息泄露,似乎已经被坐实. 然而,对于数据泄露的方式,网易和乌云存在着一定的分歧.那么,乌云在说什么,网易又在说什么呢?我们可以简单梳理一下. 1.1 ...

最新文章

  1. 松翰松翰c语言编程指导,松翰C程序检单例程代码下载
  2. App小样在手机运行了一下
  3. mysql gbk支持_mysql支持gbk
  4. 计算机技术是双证,计算机技术在职研究生单证可以转双证吗
  5. wcdma系统随机接入过程的流程图_招聘电信协优初中级优化工程师、联通系统高级...
  6. 《大道至简》最后两章读后感
  7. Telegraf介绍和使用
  8. Python全栈工程师(15:Socket编程4-paramiko模块和SSH秘钥)
  9. Java Graphics and 界面显示文字并换行
  10. 2015年宏观经济总结和2016年猜想
  11. 【哲理】24部经电影的24句话和24个哲理
  12. C语言报错:error: expected ‘while’ at end of input } ^
  13. 基于51单片机的霓虹灯c语言,基于51单片机霓虹灯.pdf
  14. oracle 列转行 带逗号_oracle wm_concat 列转行 逗号分隔
  15. 解决知云文献翻译软件Translator反应慢问题
  16. 信息系统建设和服务能力评估证书CS
  17. [JVM]成为JavaGC专家(1)—深入浅出Java垃圾回收机制
  18. HFSS - 矩形口径喇叭天线的设计与仿真
  19. Revit二次开发学习笔记
  20. 深度强化学习笔记(二)马尔可夫决策过程

热门文章

  1. python列表有哪些操作_python列表的基本操作有哪些
  2. e语言通用进销存源码_Go 语言设计哲学之五:代码风格的唯一标准
  3. 对于大家族Sring这些你究竟了解吗
  4. 二甲医院云服务器,医院用上云计算 病情上传到云端可行否?
  5. 哪个html元素指定了页面描述,网页的设计HTML元素属性2.doc
  6. 渗透专用linux镜像,安装DVWA渗透环境到CentOS7系统中(附百度云ova镜像下载)-Go语言中文社区...
  7. docker删除mongo数据库库_Docker 搭建MongoDB环境
  8. python参数传递方法_【python学习笔记】函数参数传递方法
  9. 简单的INSERT语句
  10. Java笔试面试练习题---集合