Hadoop 资源管理框架 YARN : ResourceMan

2021-09-14  本文已影响0人  光剑书架上的书

ResourceManager 核心功能

集群资源统一管理和调度

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

通信 (三个角色通信)

1. 与NodeManager通信(ResourceTracker )

2. 与ApplicationMaster通信(ApplicationMasterProtocol)

3. 与客户端通信(ApplicationClientProtocol)


模块简介

七个模块

1. 用户交互模块

2. NM管理模块

3. AM管理模块

4. Application管理模块

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

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

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


模块详解七个模块

1. 用户交互模块

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

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

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协议)

3. AM管理模块

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

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

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

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
负责应用程序的启停

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

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

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

特点

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

上一篇 下一篇

猜你喜欢

热点阅读