【Juicy-Bigdata】Hadoop之Yarn实战

Yarn集群的架构和工作原理

RM 和NM 的功能介绍

ResourceManager基本介绍

一、职能

  1. 与客户端交互,处理客户端的请求
  2. 启动和管理AM,并在它failed的时候restart
  3. 管理NN,接收来自NN的资源汇报情况,向NN下达管理指令
  4. 资源管理调度,接受来自AM的资源请求,分配资源

二、内部结构

image-20221114152223523

  1. 用户交互模块
  • clientRMService:处理提交应用程序,终止程序,获取程序状态请求
  • adminService:管理员的通信信道
  • webApp
  1. NM管理模块
  • NMLivelinessMonitor:监控NM是否活着。、
  • NodeListManager: 维护正常和异常的NM节点列表,默认情况下都为空
  • ResourceTrackerService: 处理来自NN的请求,包括注册和心跳。
  1. AM管理模块
  • AMLivelinessMonitor:监控Am是否活着。

  • ApplicationMasterLauncher:要求某一个NM启动ApplicationMaster,处理创建和kill Am的请求

  • ApplicationMasterService: 处理来自Am的请求,注册、心跳、清理。

  1. Application管理模块
  • ApplicationACLLsManager:管理应用程序的权限
  • RMAPPManager:管理应用程序的启动和关闭
  • ContainerAllocationExpirer
  1. 状态机管理模块:
  • RMApp : RMApp 维护一个应用程序的的整个运行周期,一个应用程序可能有多个实例,RMApp 维护的是所有实例的

  • RMAppAttempt : RMAppAttempt 维护一个应用程序实例的一次尝试的整个生命周期

  • RMContainer : RMContainer 维护一个Container 的整个运行周期(可能和任务的周期不一致)

  • RMNode : RMNode 维护一个NodeManager 的生命周期,包括启动到运行结束的整个过程。

  1. 安全模块:
  • RM 自带了全面的权限管理机制。主要由ClientToAMSecretManager、
    ContainerTokenSecretManager、ApplicationTokenSecretManager 等模块组成。
  1. 资源分配模块
  • ResourceScheduler:ResourceScheduler 是资源调度器,他按照一定的约束条件将资源分配给各个应用程序。RM 自带了一个批处理资源调度器(FIFO)和两个多用户调度器Fair Scheduler 和Capacity Scheduler

三、启动AM

image-20221114153828635

四、申请和分配container

image-20221114153935558

TODO