yarn架构学习

yarn的资源管理架构

RM节点

资源调度算法

参数<property>yarn.resourcemanager.scheduler.class</property>

  • capacity scheduler,默认值<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>,可不配置
  • fair scheduler,参数设置为org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler,并将<property>yarn.scheduler.fair.max.assign<property>设置为1,允许单独定义fair-scheduler.xml文件
  • FIFO,

Services

communication

yarn的交互模块分三部分

  • ClientRMService,用户交互模块,处理用户提出的 commit app申请,kill app申请,获取app的status
  • AdminService,管理员交互模块,yarn为管理员单独提供一个通道,防止因user访问过多造成管理员命令被饿死。

refreshQueues,刷新ResourceSchedule,

refreshNodes,刷新节点列表,exclude(可接入RM)/include(不可接入RM)

refreshSuperUserGroupGonfiguration,刷新用户组配置

refreshUsertoGroupMapping,刷新用户组的对应关系

refreshAdminAcls,通过yarn.admin.acls接口

refreshServiceAcls,更新服务访问控制列表,ClientRmService/AppMasterService/ResourceTrackerService

  • WebApp,提供web ui页面

NMService

RMService

AppMasterService

管理方法与状态机

  1. RM节点的AMLiveLinessMonitor服务,定期巡检所有的AppMaster节点
  2. AM节点向RM节点发送心跳,由AppMasterService处理;RM超过yarn.am.liveness-monitor.expiry-interval-ms设置的心跳时间未收到AM的心跳反馈,则认为AM失败
  3. 由RM的AppMasterLaucher,将该AM的所有container节点置为failed
  4. 由RM的AppMasterLaucher,向另一个NM节点提出发出创建ContainerManager的client的请求,内容包括命令,Jar包、环境变量等,打包发送,请求次数由yarn.resourcemanager.am.max-retries参数控制,然后再发起链接请求,协议为AMRMProtocol;
  5. NM受理并创建新的AM,与原AM工作一致
  6. 新的AM向RM进行注册,由RM节点的AppMasterService服务受理
  7. 新AM能获取到所有相关container的工作,觉得重要,则向RM提出新建container的申请,申请资源,由RM节点的AppMasterService服务受理
  8. 收到请求后,RM节点的AppMasterLauncher服务确认可用资源,并发起LaunchContainer的任务给NM,AppMaster所在的NM优先
  9. NM创建新的container,并向RM进行注册,包含节点ID,可用的资源上限等信息,由RM的AppMasterService受理;
  10. 当处理完成后,由AM向RM发送finishApplicationMaster请求,由RM的AppMasterService受理;
  11. AppMasterLaucher通过RPC方式向NM发送Cleanup方法,并释放所有container。

TaskScheduler

security

RM故障切换

RM的数据存储在内存中,或者zookeeper中,这套集群存储在zookeeper中,由配置参数

<property>

            <name>yarn.resourcemanager.zk-address</name>

            <value>zw-15-154:2181,zw-15-165:2181,zw-15-162:2181</value>

</property>

控制,切换流程如下:

NM节点

功能模块

工作流程

  • 1.客户端向hdfs提交jar包,二进制文件等
  • 2.客户端向RM提交app程序
  • 3.RM向NM发出申请,请求启动AppMaster,
  • 4.NM收到请求,从hdfs获取所需要的文件,
  • 5.NM收到文件,启动AM服务
  • 6.AM服务与RM进行通讯,请求资源
  • 7.RM分配所需要的资源,返回给AM
  • 8.AM向NM发送命令StartContainerRequest
  • 8.NM检查是否第一次启动container,如果是,则从hdfs下载所需文件,否则直接启动应用。

Container生命周期

AppMaster服务

ApplicationMaster也是一个Container,是application的第一个container,承担

资源隔离

时间: 2024-11-05 11:50:53

yarn架构学习的相关文章

MySQL Innodb 架构学习

一.MySQL后台线程   1.Master Thread 核心后台线程,主要负责将缓冲池的数据异步刷新到磁盘.例如脏页的刷新,插入缓冲的合并,undo 页的回收等. 1)每秒一次的操作: 日志缓冲刷新到磁盘,即使该事务还没有提交.该操作总是会发生,这个就是为了再大的事务,提交时间都很短. 当IO压力很小时(1s内发生的IO次数小于5% innodb_io_capacity)合并5% innodb_io_capacity 的插入缓冲. 当脏页比例大于 innodb_max_dirty_pages

yarn架构——本质上是在做解耦 将资源分配和应用程序状态监控两个功能职责分离为RM和AM

Hadoop YARN架构解读 原Mapreduce架构 原理架构图如下: 图 1.Hadoop 原 MapReduce 架构 原 MapReduce 程序的流程:首先用户程序 (JobClient) 提交了一个 job,job 的信息会发送到 Job Tracker 中,Job Tracker需要与集群中的机器定时通信 (heartbeat), 需要管理哪些程序应该跑在哪些机器上,需要管理所有 job 失败.重启等操作.TaskTracker 是 Map-reduce 集群中每台机器都有的一个

高可用软件Keepalived学习之Keepalived架构学习

最近在测试新游戏的部署方案,我们正在测试的一款手游后端代码部署采用HAProxy+Keepalived的方式进行部署,所以顺便研究下Keepalived的详细资料. Keepalived的官方地址是http://www.keepalived.org/index.html Keepalived是一个用C语言编写的路由软件,它的目的是为Linux系统或基于Linux系统的基础架构提供简单而强壮的负载均衡和高可用机制.负载均衡框架依赖于LVS的内核模块并提供四层负载均衡功能.它可以根据负载均衡器后端的

理解Hadoop YARN架构

1. 介绍 YARN(Yet Another Resource Negotiator)是一个通用的资源管理平台,可为各类计算框架提供资源的管理和调度. 其核心出发点是为了分离资源管理与作业调度/监控,实现分离的做法是拥有一个全局的资源管理器(ResourceManager,RM),以及每个应用程序对应一个的应用管理器(ApplicationMaster,AM),应用程序由一个作业(Job)或者Job的有向无环图(DAG)组成. YARN可以将多种计算框架(如离线处理MapReduce.在线处理的

ABP架构学习系列

ABP实践学习系列 ABP Zero 本地化语言的初始化和扩展 ABP Zero 导航菜单之角色权限 ABP Zero示例项目问题总结 ABP后台服务之作业调度Quartz.NET ABP架构学习系列 ABP架构学习系列一 整体项目结构及目录 ABP架构学习系列二:ABP中配置的注册和初始化 ABP架构学习系列三:手工搭建ABP框架 IOC基础学习系列 .Net IOC框架入门之一 Unity .Net IOC框架入门之二 CastleWindsor 各大主流.Net的IOC框架性能测试比较(转

spring 架构学习

学习目的用于抽象业务逻辑,因spring本身就是抽象业务逻辑的框架,如做业务架构网面的工作 spring为不二之选. 一些好的网址 http://www.ibm.com/developerworks/cn/java/j-lo-spring-principle/ http://www.iteye.com/blogs/subjects/Spring_jiwenke http://blog.csdn.net/it_man/article/details/4402245 http://elf8848.i

转:大型网站架构学习笔记

前言 最近一直在拜读两本书: 1.李智慧老师的<大型网站技术架构 核心原理与案例分析> http://www.linuxidc.com/Linux/2015-11/125137.htm 2.曾宪杰老师的<大型网站系统与Java中间件实践> http://www.linuxidc.com/Linux/2015-11/125138.htm 看了并结合自己目前的工作进行了思考,感觉获益匪浅.受益良多,自己对大型网站的理解又有了不少的加深,下面分享一下自己的学习笔记. 学习笔记 1.大型网

iOS开发架构学习记录

闲着没事看了一些iOS开发架构的视频,简单的介绍了几个常用的架构设计,现将它记录如下,以后有时间再专门写这方面的内容,大家可以看看,感兴趣的就进一步学习. 一.架构基础 1.架构设计的目的 进一步解耦. 2.耦合的方式 1)单例-彼此知道对方的存在 2)delegate-被委托方不知道委托方的存在,委托方知道被委托方的存在 3)通知-双方都不知道对方的存在 二.MVC C可以控制V的渲染,C可以修改M. V可以将用户这边采集到的数据和用户事件反馈给C做进一步的处理,V可以读取到M中的数据进而展示

三层架构学习实例

如有雷同,不胜荣欣,如转载,请注明 一.三层架构实例 首先学习三层架构模式­——三层架构实现的留言和查看留言 下面是本人学习三层架构的一点感想和理解,肯定有许多不足的地方,欢迎大家斧正,谢谢,废话到此,下面咱们开始三层架构 大家都知道三层架构分为:1,表示层(UI)2,业务逻辑层(BLL)3,数据访问层(DAL),下面咱们用一个简单的实例,实战三层架构 首先建立一个空白的解决方案,添加如下项目以及文件 1.添加一个ASP.net WebApplication项目,命名为UI,新建WebForm类