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
管理方法与状态机
- RM节点的AMLiveLinessMonitor服务,定期巡检所有的AppMaster节点
- AM节点向RM节点发送心跳,由AppMasterService处理;RM超过yarn.am.liveness-monitor.expiry-interval-ms设置的心跳时间未收到AM的心跳反馈,则认为AM失败
- 由RM的AppMasterLaucher,将该AM的所有container节点置为failed
- 由RM的AppMasterLaucher,向另一个NM节点提出发出创建ContainerManager的client的请求,内容包括命令,Jar包、环境变量等,打包发送,请求次数由yarn.resourcemanager.am.max-retries参数控制,然后再发起链接请求,协议为AMRMProtocol;
- NM受理并创建新的AM,与原AM工作一致
- 新的AM向RM进行注册,由RM节点的AppMasterService服务受理
- 新AM能获取到所有相关container的工作,觉得重要,则向RM提出新建container的申请,申请资源,由RM节点的AppMasterService服务受理
- 收到请求后,RM节点的AppMasterLauncher服务确认可用资源,并发起LaunchContainer的任务给NM,AppMaster所在的NM优先
- NM创建新的container,并向RM进行注册,包含节点ID,可用的资源上限等信息,由RM的AppMasterService受理;
- 当处理完成后,由AM向RM发送finishApplicationMaster请求,由RM的AppMasterService受理;
- AppMasterLaucher通过RPC方式向NM发送Cleanup方法,并释放所有container。
TaskScheduler
security
RM故障切换
RM的数据存储在内存中,或者zookeeper中,这套集群存储在zookeeper中,由配置参数
|
控制,切换流程如下:
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