ResourceManager
管理集群资源,创建时需要一个Store存储其信息。
Store
· 管理和存储RM状态接口,包含以下两个子接口,同时继承NodeStore和ApplicationsStore接口。
· 实现目前有MemStore和ZKStore两种,它们都实现了RMState和ApplicationStore。
ApplicationInfo
可以通过该接口获取应用的ApplicationMaster、MasterContainer、ApplicationSubmissionContext和所有Container。
RMState
可以通过该接口获取RM已存储的RMNode和ApplicationInfo信息
NodeStore
管理和存储RMNode的接口,主要是添加和删除RMNode。
RMNode
Nodemanagers information on available resources and other static information.
RM管理的节点(NM)接口,包括节点信息和节点资源信息。
NodeId
RMNode id,包括节点host和端口。
ApplicationsStore
管理和存储应用的接口,包括根据ApplicationId和ApplicationSubmissionContext来创建应用以及根据ApplicationId删除相应应用。
ApplicationId
应用id接口,包含整数id和RM的启动时间戳。
ApplicationStore
应用用来管理和存储Container的接口,包括添加和删除Container、存储MasterContainer、和ApplicationMaster联系以更新应用状态。
ClientToAMSecretManager
管理客户端令牌。
RMContainerTokenSecretManager
管理容器令牌。
ApplicationTokenSecretManager
管理应用令牌。
RMDelegationTokenSecretManager
@Private
@Unstable
AResourceManager specific delegation token secret manager. The secret manager isresponsible for generating and accepting the password for each token.
管理RM委托令牌,处理每一个令牌密码的创建和验证。
Dispatcher
EventDispatcher inte易做图ce. It dispatches events to registered event handlers basedon event types.
根据事件类型将事件分发到相应的已注册的事件处理器上进行处理。
实现类AsyncDispatcher,主要包含:
private final BlockingQueue<Event> eventQueue;
存放事件的阻塞队列。
private Thread eventHandlingThread;
处理事件的线程,不断地从eventQueue中取出事件并分发到相应EventHandler上进行处理。
protected final Map<Class<? extends Enum>, EventHandler>eventDispatchers;
事件类型--事件处理器的map,用于管理相关EventHandler。
主要对外接口是register和getEventHandler。前者将事件类型和相应的EventHandler对象注册到Dispatcher上(放入eventDispatchers),后者则是获得一个GenericEventHandler,通过调用这个GenericEventHandler的handle来处理相关事件。GenericEventHandler的handle实际上只是将事件放入eventQueue,具体的事件处理是由已注册的相应EventHandler来处理的。(个人感觉这种编码模式有坏味,应该直接在Dispatcher中添加一个handle方法来表示接受事件并进行相应处理的概念,GenericEventHandler的handle方法内容移到此方法中。)
RM初始化的时候会将所有相关EventHandler注册到Dispatcher上。
ResourceScheduler
@LimitedPrivate(value={"yarn"})
@Evolving
Thisinte易做图ce is the one implemented by the schedulers. It mainly extends YarnScheduler.
· 调度器接口,主要功能继承自YarnScheduler,同时继承了Recoverable,可以从指定RMState中恢复。
· 实现有FairScheduler和FifoScheduler。
ClientRMService
Theclient inte易做图ce to the Resource Manager. This module handles all the rpcinte易做图ces to the resource manager from the client.
实现ClientRMProtocol,处理客户端相关请求,包括获取新应用、获取应用报告、提交应用,杀掉应用等。
ApplicationMasterService
实现AMRMProtocol,处理ApplicationMaster相关请求,包括注册/完成ApplicationMaster请求、ApplicationMaster对RM的分配请求、注册/注销ApplicationAttemptId等。
ApplicationMasterLauncher
用来处理AMLauncherEvent,根据事件的类型(LAUNCH,CLEANUP)创建相应AMLauncher线程并放入一个BlockingQueue中,使用一个专门的线程不断从这个queue中取出线程执行。
AdminService
实现RMAdminProtocol,提供administration相关功能,包括获取集群当前的应用队列、节点、用户、服务控制等信息。
ContainerAllocationExpirer
主要继承自AbstractLivelinessMonitor,监控Container是否过期。主要方法包括根据ContainerId对Container进行注册/注销、对过期的Container提交相应事件到相关EventHandler进行处理。
NMLivelinessMonitor
同样主要继承自AbstractLivelinessMonitor,监控RMNode是否存活。主要方法负责根据NodeId对RMNode进行注册/注销、对过期的RMNode提交相应事件到相关EventHandler进行处理。
NodesListManager
实现EventHandler,可以对节点状态事件(NODE_USABLE,NODE_UNUSABLE)进行处理(将不可用的节点放入不可用节点列表中,将恢复的节点从不可用节点中移除);同时,还可以对配置中的节点信息进行访问(包括slaves和excludeds,支持对这两个配置的动态修改)。
SchedulerEventDispatcher
实现EventHandler,处理SchedulerEvent(类型包括NODE_ADDED,NODE_REMOVED, NODE_UPDATE, APP_ADDED, APP_REMOVED, CONTAINER_EXPIRED)。包含一个BlockingQueue,handle时只负责将事件放入queue;同时还包含一个EventProcessor线程和一个ResourceScheduler,EventProcessor不断从queue中取出事件交给ResourceScheduler处理。
RMAppManager
实现EventHandler,通过处理RMAppManagerEvent(APP_SUBMIT, APP_COMPLETED)来对应用进行管理。
ApplicationACLsManager
应用访问控制管理器。
WebApp
RM的web页面管理。
RMContext
RM的上下文接口,可以以之获得以上的大部分RM成员。
ResourceTrackerService
实现ResourceTracker,主要处理NM注册和心跳请求并返回相应响应信息。
NodeManager
NodeManagerMetrics
NM统计数据类。
ApplicationACLsManager
应用访问控制管理器。
NodeHealthCheckerService
Theclass which provides functionality of checking the health of the node andreporting back to the service for which the health checker has been asked toreport.
提供检查本节点是否健康和健康报告的功能。
LocalDirsHandlerService
Theclass which provides functionality of checking the health of the localdirectories of a node. This specifically manages nodemanager-local-dirs andnodemanager-log-dirs by periodically checking their health.
提供节点本地文件夹是否健康的功能,具体就是检查NM的本地文件夹和日志文件夹。
CompositeServiceShutdownHook
JVMShutdown hook for CompositeService which will stop the give CompositeServicegracefully in case of JVM shutdown.
在JVM关闭时优雅地关闭指定服务,这里是关闭NM。
ApplicationMaster
AnApplicationMaster for executing shell commands on a set of launched containersusing the YARN framework.