Hadoop 资源管理框架 YARN : ResourceManager

网友投稿 272 2022-11-18

Hadoop 资源管理框架 YARN : ResourceManager

ResourceManager 核心功能

集群资源统一管理和调度

NodeManager(管理):接受资源汇报信息ApplicationMaster(管理):分配资源客户端(响应):处理请求

通信 ​​(三个角色通信)​​

1. 与NodeManager通信(ResourceTracker )

注册、心跳(汇报节点健康状况)、Container运行状态领取执行指令(启动/清理/删除Container)

2. 与ApplicationMaster通信(ApplicationMasterProtocol)

注册、心跳申请/释放资源

3. 与客户端通信(ApplicationClientProtocol)

提交/查询/控制应用程序

模块简介

七个模块

1. 用户交互模块

ClientRMService:处理普通用户的请求(提交、终止程序以及查询程序状态等)AdminService:处理管理员的请求(更新节点/ACL列表、更新队列信息等)防止大量的普通用户请求导致管理命令饿死。WebApp:通过Web页面展示集群资源使用情况和程序使用情况

2. NM管理模块

NMLivelinessMonitor:监控NM状态若没有定期(默认10min)汇报心跳,则从集群中移除。NodesListManager:维护正常节点和异常节点列表两个列表都是在配置文件中设置的,可动态加载。ResourceTrackerService:处理NM的请求

3. AM管理模块

AMLivelinessMonitor:监控AM状态若没有定期(默认10min)汇报心跳,则认为它死掉了,它上面运行的Container都被置为失败状态。AM会被重新分配到另一个节点上执行(用户指定重试次数,默认为2)ApplicationMasterLauncher:与NM进行通信,下发命令启动ApplicationMasterApplicationMasterService(AMS):处理来自AM的请求注册:ApplicationMaster启动节点对外RPC端口号和tackingURL等信息心跳:汇报所需资源描述、待释放的Container列表、黑名单列表等返回值是新分配的Container、失败的Container、待抢占的Container列表等信息

4. Application管理模块

ApplicationACLsManager:管理应用程序访问权限查看权限:查看应用程序基本信息修改权限:修改程序优先级、杀死应用进程等RMAppManager:管理应用程序的启停ContainerAllocationExpirer:决定Container是否被回收以及执行当AM收到RM新分配的Container后,必须在一定时间内(默认10min)在对应的NM启动该Container,否则RM将强制回收该Container

5. 状态机模块 将设计架构变得更清晰

RMApp:维护一个应用程序的生命周期RMAppAttempt:维护MRApp产生的小任务生命周期RMContainer:维护Container的生命周期目前的Container不支持重用,看看后期是否可重用RMNode:维护NodeManager的生命周期

6. 安全模块 由以下子模块组成

ClientToAMSecretManagerContainerTokenSecretManagerApplicationTokenSecretManager

7. 资源分配模块 ResourceScheduler:负责将资源分配给应用程序

批处理资源调度器:FIFO多用户调度器:Fair Scheduler和Capacity Scheduler

模块详解​​七个模块​​

1. 用户交互模块

ClientRMService和AdminService两个服务分别处理普通用户和管理员的请求

ClientRMService 本质是RPC Server(实现ApplicationClientProtocol),给客户端提供RPC服务

ClientRMService中保留了RM上下文对象RMContext,中央异步调度器通过RMContext来获取节点列表、队列组织和应用列表等信息来响应客户端请求

AdminService 本质也是RPC Server,不过服务对象是管理员 yarn.admin.acl设置的,默认是*,表示所有用户都是管理员

2. NM管理模块

由以下三个组件共同组成NMLivelinessMonitor 周期性遍历所有NM,它上面所有的Container都认为是失败的 心跳周期 (默认十分钟):​​​yarn.nm.liveness-monitor.expiry-interval-ms​​

NodesListManager 管理RM的节点

指定白名单文件:​​yarn.resourcemanager.nodes.include-path​​​ 指定黑名单文件:​​yarn.resourcemanager.nodes.exclude-path​​ 在执行以下命令让配置生效 ​​bin/yarn rmadmin -refreshNodes​​

ResourceTrackerService 本质是RPC Server,处理NM请求(通过ApplicationMasterProtocol协议)

注册(单次)NM启动时发送该请求,携带节点ID、可用资源的上限和对外开放的HTTP端口心跳(周期)包含运行的Application列表、节点健康状况和Container运行状态等返回待释放的Container列表、Application列表

3. AM管理模块

由以下三个组件共同组成 ApplicationMasterLauncher:负责启动AM ApplicationMasterService:负责跟AM通信 AMLivelinessMonitor:负责监控AM的生命周期

ApplicationMasterLauncher 即是服务也是事件处理器,响应AMLauncherEvent事件(启动/清理AM)

启动AM通过ContainerManagementProtocol跟NM通信,将启动AM所需的信息如启动命令、JAR包、环境变量等信息封装成StartContainerRequest对象发送给NM清理AM通过ContainerManagementProtocol跟NM通信,要求其杀死AM

ApplicationMasterService 处理AM的请求(通过ApplicationMasterProtocol协议)

注册(单次)AM启动时发送该请求,携带所在节点、RPC端口和trackingURL等信息心跳(周期)包含请求资源的类型、待释放的Container列表等AMS返回新分配的Container、失败的Container等信息清理(单次)AM向RM发送清理请求,来回收/清理各种资源回收AM所占的Container和将AM从AMLivelinessMonitor中删除

AMLivelinessMonitor 周期性遍历所有AM,如果有AM没有定期发送心跳则认为它挂了,它所持有的Container全部设置为失败

RM会重新为它分配资源并在另一个节点上启动

心跳时间 (默认十分钟):​​yarn.am.liveness-monitor.expiry-interval-ms​​​ AM失败重试次数 (默认两次):​​yarn.resourcemanager.am.max-attempts​​

4. Application管理模块

管理Application的生命周期、权限等

ApplicationACLsManager 管理应用程序查看/修改权限 通过该参数配置权限 ​​​yarn.admin.acl​​

RMAppManager 负责应用程序的启停

将应用程序放到应用程序列表中将应用程序从RMStateStore中移除

通过该参数设置最大应用数:​​yarn.resourcemanager.max-completed-applications​​

ContainerAllocationExpirer 管理Container的使用 如果某个AM拿到Container后一段时间内都没使用,则会强制回收(提高利用率)

等待时间 :​​yarn.resourcemanager.rm.container-allocation.expiry-interval-ms​​

特点

1. 事件驱动 中央异步调度器将组件/服务组织在一起,各个组件/服务的输出都是事件,组件/服务之间的交互都是通过事件,从而实现了异步并行的高效系统

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SpringBoot2.0整合tk.mybatis异常解决
下一篇:时钟域交叉分析方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~