Resource Manager 简介 (YARN 系列)

Resource Manager 原理 简介 

本问翻译自: http://hortonworks.com/blog/apache-hadoop-yarn-resourcemanager/

 如前所述,ResourceManager (RM)是一个仲裁整个集群可用资源的主节点,帮助YARN系统管理其上的分布式应用。它同NodeManagers(NMs) 和ApplicationMasters(AMs)一起工作。

1、NodeManagers 从ResourceManager获取指令并管理本节点的可用资源

2、ApplicationMasters 的职责是从ResourceManager谈判资源,并为NodeManagers启动容器。

      

 Resource Manager 组件

 

1、RM客户端的接口组件

      (1)ClientService: Resource Manager的客户端接口。这个组件掌控RM的所有RPC接口。从客户端可以操作应用的提交,应用的结束,获得队列信息,集群状态等。

     (2)AdminService:为了确保管理的请求由于普通用户的请求而得不到响应和给相应的操作赋高的优先级,所有的管理操作比如刷新节点列表,队列配置等,都可以通过这个接口提供。

2、RM连接到节点组件

扫描二维码关注公众号,回复: 572484 查看本文章

(1)ResourceTrackerService:这个组件相应所有节点的RPCs请求。它负责新节点的注册、拒绝无效的节点、获得节点心跳并将其转发到YarnScheduler。它的工作同NMLivelinessMonitor、NodesListManager 很接近。

(2)NMLivelineMonitor:对活的节点保持跟踪,隔离死亡的节点,这个组件跟踪各个节点的最新心跳时间。任何节点在超过预定的时间没有心跳,默认是10 分钟,则被RM认为是节点死亡并被失效掉。所有运行在一

个失效的节点上的containers 将被标示为死亡,同时不再会有新的container被调度到这类节点。

(3)NodesListManager:一个有效的和排除的节点集合。负责从读取host配置文件的特定参数:yarn.resourcemanager.nodes.include-path 和yarn.resourcemanager.nodes.exclude-path 。从这些文件中寻找初始化节点列表,同时根据时间的推移保持对退役的节点跟踪。

3、与应用AMs相互作用的组件

   (1)ApplicationMasterService:这个组件负责相应所有AMs的RPC请求。负责对新AMs的注册,终止/注销来自即将结束的AMs的请求。获取来自各个运行着的AMs的容器分配和从新分配请求,并将其转发到YarnSecheduler.他和AMLivelinessMonitor 相近。

   (2)AMLivelinessMonitor:管理活着的AMs列表和死亡/无相应AMs,这个组件保持跟踪各个AM的最新心跳时间。任何AM在预定的时间内没有心跳,默认10分钟,就会RM被认为死亡并失效掉。所有运行在或不分配在失效的AM上的container被标识为死亡。RM 分配一个新的AM 去运行一个新的container,默认允许尝试的次数最大为4次。

 

4、RM核心——调度器及相关组件

(1)ApplicationManager: 负责维持已提交的应用集合。同时为了相应用户通过webUI或者命令行查询已经完成的应用, 保持可已完成的应用的一份缓存。

(2)ApplicationACLsManager:RM 需要为用户可见的API提供一个入口,类似客户端和管理请求只有被授权的用户才能通过。这个组件维持每个应用的ACLs列表,同时强制每个请求(比如杀死应用程序)前查看应用程序的状态是否可接受。

(3)ApplicationMasterLauncher:维护一个线程池为新提交的应用程序发布AMs,同时维护应用程序由于某种原因尝试退出的AM。同时也对已经自然运行结束或者被迫结束的应用程序的AM进行清洗。

(4)YarnScheduler: 调度器负责为受限于容量、队列等的应用程序分配资源。它执行调度功能是基于应用程序的资源请求,例如内存,cpu,硬盘,网络等。目前,只有内存是支持的,cpu也接近完全支持。

(5)ContainerAllocationExpirer:这个组件管理确保所有的已分配容器被AMs使用着,随后被发布到相应的NMs中。AMs 运行着非可靠的用户代码,有可能存在分配的资源没有被使用的情况,这将导致集群使用率降低。加上这个组件,ContainerAllocationExpirer 维护那些已被分配的容器但还没有被相应的NMs使用的列表。对于任何容器,如果对应的NM在预定的时间间隔内没有向RM汇报容器已经开始启动,默认10分钟,容器将被RM认为死亡并被标志为过期。

5、令牌加密管理组件:RM 有一个密钥管理集合,用来对令牌、密钥进行管理,将来的文章将讨论一种更安全令牌的详细描述,密钥管理但简要总结如下:

(1)ApplicationTokenSecretManager:为了避免任意进程发送RM调度请求,RM使用应用程序为令牌称为ApplicationTokens。这个组件保存在本地内存中每个令牌直到应用程序完成,并使用它来验证任何请求来自一个有效的AM 进程。

(2)ContainerTokenSecretManager: 为ContainerTokens , SecretManager那些特殊令牌,由RM为AM的一个容器的一个特殊节点签发的。ContainerTokens使用AMs创建一个连接到相应的NM,容器被分配的地方。

(3)RMDelegationTokenSecretManager: ResourceManager特定委托令牌,密钥管理。它负责生成委托令牌可以给客户,令牌传递给未经身份验证但希望能够跟RM进行沟通的进程。

6、委托令牌重建:在安全模式,RM 是有kerberos授权的,同时也为应用程序提供重建文件系统的令牌服务,只要提交的应用程序已在运行,这个组件为该应用重建令牌,直到不需要再重建。

 

总结

  

   YARN ,ResourceManager 主要局限在于调度,只有仲裁系统中可用的资源在竞争的应用,而不关心自身与应用程序的状态管理。 由于这种清晰的职能划分,再加上上面描述的模块化,并与讨前面讨论的强大的调度程序API,RM能够解决最重要的设计要求,可扩展性,支持交替编程范例。

 为允许不同的限制策略,RM调度器是可插拔的,同时允许不同的算法。

 

猜你喜欢

转载自gengqi88.iteye.com/blog/1978203