Apache Hadoop YARN – ResourceManager

原文地址:Apache Hadoop YARN – ResourceManager

ResourceManager (RM) 是管理所有可用的集群资源并协助管理运行在YARN上的分布式应用的主要组件。RM与每个节点的NodeManagers (NMs)和每个应用的ApplicationMasters (AMs)一起工作。

  1. NodeManagers 遵循来自ResourceManager的指令来管理单一节点上的可用资源。
  2. ApplicationMasters负责与ResourceManager协商资源并与NodeManagers合作启动容器。

ResourceManager 架构

ResourceManager 组件

ResourceManager 有以下组件:
1. RM与客户端交互的接口:

  • ClientService:Resource Manager的客户端接口。该组件处理从客户端到RM的所有RPC接口,包括像应用提交、应用终止、请求队列信息和集群统计信息等操作。
  • AdminService:用来保证管理请求不会由于普通用户的请求而饿死,赋予操作者的命令更高的优先级。所有的管理操作,如刷新节点列表或队列的配置等,都通过这个独立的接口提供服务。
2. RM与其它节点的连接组件:

  • ResourceTrackerService:该组件回应所有节点的RPC请求。它负责注册新的节点,拒绝无效或退役节点的请求,获取节点的心跳并转发到YarnScheduler。它与下面描述的NMLivelinessMonitor 和 NodesListManager组件配合得很不错。
  • NMLivelinessMonitor:该组件根据每个节点的上一次心跳来跟踪存活节点和记下死亡节点。任何在规定时间内(默认10分钟)没有心跳的节点都将被RM认为死亡和过期。过期节点上所有正在运行的容器都被标记为死亡,这样的节点上不会再有新的容器被调度。
  • NodesListManager:一个管理有效或排除节点的集合。负责读取指定的主机配置文件(通过yarn.resourcemanager.nodes.include-path和yarn.resourcemanager.nodes.exclude-path),初始化基于这些文件的节点列表。同时,随着时间的推移,跟踪那些退役的节点。

3. RM与每个应用的AMs交互的接口:

  • ApplicationMasterService:该组件回应所有的AMs的RPC请求。它负责注册新的AMs,终止或注销来自任何完成的AMs的请求,从正在运行的AMs获取容器分配和释放的请求并转发到YarnScheduler。它与以下描述的AMLivelinessMonitor配合得不错。
  • AMLivelinessMonitor:该组件根据每个AM的上一次心跳来跟踪存活节点和记下死亡节点。任何在规定时间内(默认10分钟)没有心跳的AM都将被RM认为死亡和过期。过期AM管理的所有正在运行或分配的容器都被标记为死亡。RM会调度同样的AM运行在一个新容器里,默认允许做多4次这样的尝试。
4. RM的核心——调度器和相关组件:

  • ApplicationsManager:负责维护一个已提交应用的集合。还做了已完成应用的缓存,以便为用户通过web UI 或命令行发出的请求提供服务,直到这些应用结束。
  • ApplicationACLsManager:RM 必须为这些客户端和管理请求的用户APIs设立一道关卡,使得它们只对授权用户可见。该组件为每一个应用维护了一个ACLs列表,并且每当接收到像杀死一个应用、查看应用状态的请求时就执行它们。
  • ApplicationMasterLauncher:维护一个线程池来运行新提交的或者前一个AM尝试因故退出的应用的AMs。还负责在应用正常结束或强制终止时清理对应的AM。
  • YarnScheduler:该调度器在容量、队列等因素的制约下负责对各种各样的正在运行的应用分配资源。这是基于应用的诸如内存、CPU、磁盘和网络等资源的需求来调度的。但是,目前只支持内存,不远的将来就会支持CPU调度。
  • ContainerAllocationExpirer:该组件负责保证所有已分配的容器是被AMs使用的并且随后运行在相应的NMs。如果AMs运行了不信任的用户代码,可能会占用分配到的资源而不使用,同样导致了集群的利用率低下。为了处理这个问题,ContainerAllocationExpirer 维护了一个已分配但仍旧没有在相应的NMs上使用的容器列表。对于任何容器,如果相应的NM没有在指定时间(默认10分钟)内向RM报告这个容器已经开始运行,那么这个容器就被RM认定为死亡和过期。

5. 令牌密码管理组件:ResourceManager 有一个密钥管理的集合,负责管理在各种RPC接口上的认证和授权请求中使用的令牌、密钥。就不详细介绍了,主要有

  • ApplicationTokenSecretManager
  • ContainerTokenSecretManager
  • RMDelegationTokenSecretManager

6. 代理令牌重建组件:在安全模式下,RM使用的是Kerberos认证,因此可以提供更新代表应用的文件系统令牌的服务。只要有应用运行,该组件就更新已提交的应用的令牌,直到令牌再也不能更新。


结论

在YARN里,ResourceManager 主要限于在相互竞争的应用之间调度系统中的可用资源,而不考虑每个应用的状态管理。由于这种清晰的责任划分,加上上述的模块化,还有强大的调度接口,RM能够解决诸如可扩展性、支持可迭代程序设计范型等最重要的设计需求。
调度器是可插拔式的,可以实现不同的算法以支持不同的约束策略。

    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值