您的位置:首页 > 运维架构 > Apache

Apache Hadoop YARN – ResourceManager

2014-06-25 11:09 405 查看
原文地址:Apache Hadoop YARN – ResourceManager

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

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



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能够解决诸如可扩展性、支持可迭代程序设计范型等最重要的设计需求。

调度器是可插拔式的,可以实现不同的算法以支持不同的约束策略。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: