Hadoop 资源管理框架 YARN : ResourceManager

ResourceManager 核心功能

集群资源统一管理和调度

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

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

1. 与NodeManager通信(ResourceTracker )

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

2. 与ApplicationMaster通信(ApplicationMasterProtocol)

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

3. 与客户端通信(ApplicationClientProtocol)

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

模块简介

七个模块

Hadoop 资源管理框架 YARN : ResourceManager

1. 用户交互模块

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

2. NM管理模块

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

3. AM管理模块

  • AMLivelinessMonitor:监控AM状态
    若没有定期(默认10min)汇报心跳,则认为它死掉了,它上面运行的Container都被置为失败状态。AM会被重新分配到另一个节点上执行(用户指定重试次数,默认为2)
  • ApplicationMasterLauncher:与NM进行通信,下发命令启动ApplicationMaster
  • ApplicationMasterService(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. 安全模块
由以下子模块组成

  • ClientToAMSecretManager
  • ContainerTokenSecretManager
  • ApplicationTokenSecretManager

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

Original: https://blog.51cto.com/u_15236724/5365451
Author: 禅与计算机程序设计艺术
Title: Hadoop 资源管理框架 YARN : ResourceManager

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/517540/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球