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注释:
相关推荐
- **MapReduce v2 (MRv2):** 作为 YARN 的一部分,支持新的 API,提高了灵活性和性能。 **2. MapReduce v1 与 MapReduce v2 的对比:** - **API 变更:** MRv2 提供了新的 API,允许开发者编写更复杂的应用程序。 ...
这部分内容详细讲述了YARN的核心组件,包括ResourceManager(资源管理器)、ApplicationMaster(应用主节点)和NodeManager(节点管理器)。此外,还介绍了YARN的调度策略,如FIFO、公平调度器和容量调度器。文章还...
2. **NodeManager (NM)**:每个节点上的NM是YARN的基础执行单元,它管理该节点的资源,响应来自ResourceManager的命令,以及ApplicationMaster的命令,如启动或停止容器。 3. **ApplicationMaster (AM)**:每个应用...
MRV2,也称为YARN(Yet Another Resource Negotiator),是Hadoop 2.x引入的新一代MapReduce框架,旨在提高资源管理和应用程序的灵活性。在MRV2中,MapReduce任务被分解为两个独立的组件:ApplicationMaster和...
为了解决这些问题,Hadoop 2.0版本引入了一种新的资源管理系统YARN,即MRv2。YARN是一种通用的资源调度体系,它支持多种计算框架(如MapReduce、Spark、Storm等),让它们能够在同一个集群上运行。YARN的核心是资源...
YARN/MRv2架构中,ResourceManager负责全局资源管理和调度,而ApplicationMaster专注于任务调度和监视。此外,NodeManager在每个节点上管理任务执行,Container则作为资源分配的基本单位,考虑了CPU和内存等资源的...
- **MRv2**: YARN的容错机制更为健壮,因为ResourceManager和ApplicationMaster可以独立恢复,即使某个节点失败,作业也能继续进行。 5. **性能优化** - **MRv1**: MRv1中,Shuffle阶段的数据传输效率较低,且...
在Hadoop 2.x版本中引入,YARN的目标是解决原MapReduce框架(MRv1)的不足,提高集群资源的利用率和整体性能。YARN通过将资源管理和任务调度功能分离,实现了更高效、灵活的集群资源分配。 【原MapReduce框架的不足...
YARN(Yet Another Resource Negotiator)是 Hadoop 2.0 中的资源管理系统,它的设计思想是将 MRv1 中的 JobTracker 拆分成两个独立的服务:一个全局的资源管理器 ResourceManager 和每个应用程序持有的 ...
YARN主要分为三个核心组件:资源管理器(ResourceManager)、节点管理器(NodeManager)和应用程序历史服务器(ApplicationHistoryServer)。其中,资源管理器负责整个系统的资源管理和任务调度,它允许不同应用程序...
在大数据处理中,除了Hadoop MapReduce(MRv2)外,还有其他计算框架如Storm(实时流处理)、Spark(内存计算)和Impala(快速查询)。这些框架各有优势,如Spark通过内存计算大幅提高处理速度,而Impala利用自己的...
YARN(MRv2)是 Hadoop 的新架构,旨在解决 MRv1 的问题。YARN 采用了一种分层的集群框架方法,将特定于 MapReduce 的功能已替换为一组新的守护程序,将该框架向新的处理模型开放。 YARN 的新架构 YARN 的新架构...
此外,`yarn.nodemanager.aux-services`用于设置MapReduce所需的辅助服务,如MRv2 shuffle service。 `hdfs-site.xml`是HDFS(Hadoop Distributed File System)的配置文件,它定义了HDFS的行为,如副本数量、块...
Hadoop 体系架构 Hadoop 体系架构是大数据处理的核心组件之一。...YARN 是 Hadoop 的新架构,旨在解决 MRv1 的问题,提供了一种分层的集群框架方法,能够支持 MRv2 和其他使用不同处理模型的应用程序。
YARN是Hadoop2.0中的资源管理系统,它的设计思想是将MRv1中的JobTracker拆分成两个独立的服务:一个全局的资源管理器ResourceManager和每个应用程序持有的ApplicationMaster。其中RM负责整个系统的资源管理和分配,...
最后,对于MapReduce本身的单点故障问题,Hadoop 2.0引入了两种MapReduce实现:MRv1和MRv2(又称YARN上的MapReduce)。在MRv1中,JobTracker是单点故障,但在MRv2中,JobTracker被替换为ApplicationMaster,每个应用...
为解决这些问题,Apache社区启动了下一代MapReduce框架的开发,即所谓的MRv2或YARN(Yet Another Resource Negotiator)。 在MapReduce框架的发展背景下,Hadoop社区意识到需要对现有的基础设施进行根本性的重构以...