ResourceManager相当于整个系统的master,主要功能是启动application的ApplicationMaster和分配系统资源。
ResourceManager的核心代码在java包 org.apache.hadoop.yarn.server.resourcemanager中的ResourceManager类中,主要涉及到三种 对象:事件处理器,RPC服务和普通服务,其中事件处理器实现EventHandler接口,并被注册到统一的事件调度器AsyncDispatcher 中,由该调度器进行统一管理和调度:
……
private EventHandler<SchedulerEvent>schedulerDispatcher; //实际上是AsyncDispatcher
……
this.rmDispatcher.register(RMAppEventType.class,
new ApplicationEventDispatcher(this.rmContext));
……
Register函数有两个参数,第一个是事件类型,另一个是事件处理器。
每种事件对应一种事件处理器,一旦该事件发生,事件调度器会直接交由其对应的事件处理器处理,而事件处理器实际上是一个状态机,事件会使一个对象从一种状态变为另一种状态,并触发相应的行为;
RPC服务主要功能是创建一个RPC server,供远程客户端调用提供的服务(接口)。实现时,会继承AbstractService抽象类,实现某个RPC协议,并调用YarnRPC中 的getServer接口创建一个server以供客户端RPC调用。主要涉及四个RPC服务,分别是 ApplicationMasterService(实现AMRMProtocol协议),ResourceTrackerService(实现 ResourceTracker协议),ClientRMService(实现ClientRMProtocol协议)和AdminService(实现 RMAdminProtocol服务)
普通服务继承AbstractService抽象类,一般为一个后台线程或者普通对象。RPC服务和普通服务会被组装到组合服务对象CompositeService中,以便统一进行管理(启动、停止等)。
【四种actor】
四个概念,每个代表一个actor,对应一个状态机。
RMApp:application的状态信息,
由org.apache.hadoop.yarn.server.resourcemanager.rmapp/RMAppImpl.java实现。
RMAppAttempt:运行application的一次尝试(每个application从1开始逐步尝 试运行,如果失败,则继续尝试运行,直到成功或者到达某个尝试上限,如果成果,则该application运行成功。一个RMApp可能对一个多个 RMAppAttempt),由 org.apache.hadoop.yarn.server.resourcemanager.rmapp.attempt/
RMAppAttemptImpl.java实现
RMContainer:各个container的状态信息,由org.apache.hadoop.yarn.server.resourcemanager.rmcontainer/
RMContainerImpl.java实现。
RMNode:YARN集群中每个节点的状态信息,由org.apache.hadoop.yarn.server.resourcemanager.rmnode/RMNodeImpl.java
【PRC服务】
ClientRMService:实现ClientRMProtocal协议,负责与client交互,接收来自client端的请求并作出响应。
ApplicationMasterService:实现了AMRMProtocol通信协议,负责与ApplicationMaster交互,接收来自ApplicationMaster的请求并作出相应。
ResourceTrackerService:实现了ResourceTracker协议,主要负责管理各个NodeManager,如新NodeManager注册,死NodeManager的剔除,会调用NMLivelinessMonitor的一些接口。
AdminService:实现RMAdminProtocol协议,主要负责整个系统权限管理,如哪些client可以修改系统中队列名称,给某些队列增加资源等。
【其他类】
ApplicationMasterLauncher:创建ApplicationMaster
NMLivelinessMonitor:监控各个Nodemanager是否存活,默认情况下,如果某个NodeManage在10min内卫汇报心跳,则认为该节点出现故障。
RMAppManager:application管理者,client端提交的作业会最终提交给该类。
ResourceScheduler:非常核心的组件,application调度器,当某个节点出现空闲资源 使,采用某种策略从application队列中选择某个application使用这些空闲资源。当前有两种调度器: FIFO(First In First Out,默认调度器)和CapacityScheduelr(与Hadoop MapReduce中的Capacity Scheduler思想相同)。
ApplicationACLsManager:Application权限管理,即:对于某个application,哪些用户可以查看运行状态,哪些可以修改运行时属性,如优先级等。
NodesListManager:node列表管理,可以动态往集群中添加节点或者减少节点。
【代码整体划分】
下图是整个ResourceManager相关代码的java package注释:
相关推荐
赠送源代码:hadoop-yarn-server-resourcemanager-2.6.0-sources.jar; 赠送Maven依赖信息文件:hadoop-yarn-server-resourcemanager-2.6.0.pom; 包含翻译后的API文档:hadoop-yarn-server-resourcemanager-2.6.0-...
YARN(MRv2)搭建
hadoop2.7.4安装包补丁包,解决yarn定时调度启动问题!!
yarn-v0.23.2.tar.gz 在安装ambari,源码编译的时候下载的文件有问题 手动下载 地址 https://github.com/yarnpkg/yarn/releases/download/v0.23.2/yarn-v0.23.2.tar.gz
Yarn ResourceManager HA配置,Yarn ResourceManager HA配置
elasticsearch-dataformat.zip,此插件在ElasticSearch上提供多个response formats.excel/csv/bulkjson下载。
利用Hadoop YARN ResourceManager 未授权访问getshell工具以及WORD说明
Zabbix监控Hadoop集群时用到的模板,可配合本人写的文章进行部署。
详细的描述了yarn的框架,对yarn的实现代码进行了详细的分析
java运行依赖jar包
java运行依赖jar包
Hadoop的2.0版本的yarn的框架介绍啊 Hadoop yarnYARN 本身框架的优势是扩展性与支持多计算模型。对于扩展性目前主要体现在计算节点规模上,以前 JobTracker-TaskTracker 模型下最多大约在 5000 台机器左右,对于 ...
hadoop3.1.1基于hdp3.1.5版本的ReentrantReadWriteLock还原成hadoop2.x版本的synchronized锁
java运行依赖jar包
yarn-v1.22.5.tar.gz
从架构、设计模式和代码对Yarn进行的详细剖析和原理机制的分析
Yarn框架代码详细分析V0.3.pdf
hadoop-cmf-yarn-RESOURCEMANAGER-cdp-master1-53.log (2).out
官网直接安装的不支持vite2+vue3的 主要修复: 1.build或者dev项目时不报错,兼容vite2,vue3; 2.加入deep监听watch,直接在父组件中修改图表中的config参数即可完成图表中的数据变更。 yarn npm cnpm pnpm可通用...
Hadoop ResourceManager API