Hadoop技术内幕_YARN--ResourceManager剖析

与MRv1一样,YARN也采用了Master/Slaver结构,Master实现为ResourceManager,负责整个集群资源的管理和调度;Slave实现为NodeManager,负责整个节点的资源管理与任务启动

ResourceManager基本职能

Hadoop技术内幕_YARN--ResourceManager剖析_第1张图片

概况起来,ResourceManager主要完成以下几个功能:

  1. 与客户端交互,处理来自客户端的请求
  2. 启动和管理ApplicationMaster,并在它运行失败时重新启动它
  3. 管理NadeManager,接受来自NodeManager的资源汇报信息,并向NodeManager下达管理指令(比如杀死Container等)
  4. 资源管理和调度,接受来自ApplicationMaster的资源申请请求,并为之分配资源

ResourceManager内部结构

Hadoop技术内幕_YARN--ResourceManager剖析_第2张图片
image.png
用户交互模块
  1. ClientRMService:是为普通用户提供的服务,它处理来自客户端各种RPC请求,比如提交应用程序、终止应用程序 、获取应用程序运行状态等
  2. AdminService:是管理员提供的一套独立接口
  3. WebApp:为了更加友好地展示集群资源使用情况和应用程序运行状态等信息,YARN对外提供了一个Web界面
NM管理模块
  1. NMLivelinessMonitor:监控NM是否活着
  2. NodesListManager: 维护正常节点和异常节点列表
  3. ResourceTrackerService: 处理来自NodeManager的请求,主要包括注册和心跳两种请求
AM管理模块
  1. AMLivelinessMonitor:监控AM是否活着
  2. ApplicationMasterLauncher:与某个NodeManager通信,要求它为某个应用程序启动ApplicationMaster
  3. ApplicationMasterService(AMS):处理来自AM的请求,主要包括注册和心跳两种请求
Application管理模块
  1. ApplicationACLsManager:管理应用程序访问权限
  2. RMAppManager 管理应用程序的启动和关闭
  3. ContainerAllocationExpirer::当AM收到RM新分配的一个Container后,必须在一定时间内在对应的NM上启动该Container
状态机管理模块:ResourceManager使用有限状态机维护有状态对象的生命周期,共维护了4类状态机:RMApp、RMAppAttempt、RMContainer、RMNode(这几个均是接口,具体实现类为对应接口名加上Impl后缀)
  1. RMApp:维护了一个应用程序的整个运行周期
  2. RMAppAttempt:一个应用程序可能启动多个实例,维护了一次运行尝试的整个声明周期
  3. RMContainer:维护了一个Container的运行周期
  4. RMNode:RMNode维护了一个NodeManager的声明周期
安全管理模块:RM自带了非常全面的权限管理机制,主要由ClientToAMSecretManager、ContainerTokenSecretManager、ApplicationTokenSecretManager
资源分配模块

该模块主要涉及一个组件--ResourceScheduler,是资源调度器,它按照一定的约束条件将集群中的资源分配给各个应用程序,当前主要考虑内存和CPU资源

ResourceManager事件与事件处理器

Hadoop技术内幕_YARN--ResourceManager剖析_第3张图片
Hadoop技术内幕_YARN--ResourceManager剖析_第4张图片
NodeManager内部事件与事件处理器
Hadoop技术内幕_YARN--ResourceManager剖析_第5张图片
ResourceManager内部事件与事件处理交互图

用户交互模块

ClientRMService

是一个RPC服务,为来自客户端的各种RPC请求提过服务,实现了一个ApplicationClientProtocol协议的服务
保留了一个RM上下文对象RMContext,通过该对象可获知RM中绝大部分信息,包括节点列表、队列组织、应用程序列表等

AdminService

也是一个RPC Server,但它的服务对象是管理员

ApplicationMaster管理

由三个服务组成,分别是ApplicationMasterLauncher、AMLivelinessMonitor、ApplicationMasterService,它们共同管理应用程序的ApplicationMaster的生命周期

Hadoop技术内幕_YARN--ResourceManager剖析_第6张图片
ApplicationMaster启动流程

AMLivelineMonitor启动心跳监控

NodeManager管理

主要由三个服务组成,分别是NMLivelinessMonitor、NodesListManager、ResourceTrackerService,它们共同管理NodeManager的生命周期
NMLivelinessMonitor管理着AM的container
NodesListManager管理exlude(类似于黑名单)和include(类似于白名单)节点列表
ResourceTrackerService实现了RPC协议ResourceTracker,负责处理来自各个NodeManager的请求,请求主要包括注册 和心跳两种

Application管理

YARN中Application管理涉及应用程序的权限管理、启动与关闭、生命周期管理等

  1. ApplicationACLsManager负责管理应用程序的管理权限,包含两部分权限:查看权限和修改权限
  2. RMAppManager负责应用程序的启动和关闭
  3. ContainerAllocationExpirer

状态机管理

在YARN中,如果一个对象由若干个状态以及触发这些状态发生转移的事件构成,它将被抽象成一个状态机,在YARN ResourceManager内部,共有4类状态机,分别是RMApp、RMAppAttempt、RMContainer和RMNode,其中前两类状态机维护了一个应用程序的生命周期,RMContainer则维护了分配出去的各个资源的使用状态;RMNode维护了一个NodeManager(一个节点上可以有多个NodeManager)的生命周期

Hadoop技术内幕_YARN--ResourceManager剖析_第7张图片
应用程序状态机组织结构

RMContainer状态机


Hadoop技术内幕_YARN--ResourceManager剖析_第8张图片
image.png

你可能感兴趣的:(Hadoop技术内幕_YARN--ResourceManager剖析)