码迷,mamicode.com
首页 > 其他好文 > 详细

yarn架构学习

时间:2017-09-03 17:09:19      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:amp   bsp   http   对应关系   lin   包括   流程   问控制   address   

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,承担

 

资源隔离

 

技术分享

 

yarn架构学习

标签:amp   bsp   http   对应关系   lin   包括   流程   问控制   address   

原文地址:http://www.cnblogs.com/wyett/p/7469971.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!