YARN Resource Manager

1.目的

在这个Hadoop YARN资源管理器章节中,我们将讨论什么是YARN资源管理器,RM的不同组件,什么是应用程序管理器和调度器。 我们还将讨论数据流内部,安全性,资源管理器如何分配资源以及它如何与节点管理器Node Manager和客户端交互。

2. Hadoop YARN RM 资源管理器介绍

资源管理是YARN (Yet Another Resource Negotiator)的核心组成部分。相类比,它类似MRV1的JobTracker的地位。 Hadoop YARN旨在提供一个通用且灵活的框架来管理Hadoop集群中的计算资源。在这个方向上,YARN资源管理器服务(RM)是资源管理的核心控制权并进行分配决策。ResourceManager有两个主要组件:Scheduler和ApplicationsManager。

Scheduler API专门用于协商资源并且不安排任务。调度程序不会执行对应用程序状态的监视或跟踪。调度器根据应用程序的资源需求执行其调度功能;它是基于资源容器 (Resource Container)的抽象概念,它包含了内存,CPU,磁盘,网络等元素。

由于应用程序故障或硬件故障,Hadoop YARN资源管理器不保证重启失败的任务。应用程序可以请求集群拓扑的不同层上的资源,例如节点,机架等。因此,调度程序根据资源可用性和配置的共享策略确定分配多少以及在哪里分配资源。

调度程序有一个可插入的策略插件,它负责在各种队列,应用程序等之间分配群集资源。当前的Map-Reduce调度程序(如CapacityScheduler和FairScheduler)就是一个很好的例子,ApplicationsManager负责维护提交的应用程序的集合,调度程序接受来自客户端的作业并协商容器以执行特定的应用程序,并在出现故障时提供重新启动ApplicationMaster的服务。

它还保存已完成应用程序的缓存,以便在相关应用程序完成后很长时间内通过Web UI或命令行服务用户的请求。尽管上述两者是核心组件,但由于其完整的功能,资源管理器依赖于各种其他组件。具有这些组件的详细体系结构如下图所示:

1542028286392695.png

3. HadoopYARN资源管理器组件

RM与每个节点的NodeManagers(NM)和每个应用程序的ApplicationMasters(AM)一起工作。 ResourceManager具有以下组件(请参见上图):

3.1 将RM连接到客户端的组件

ClientService

到资源管理器的客户端交互通道。 该组件处理从客户端到RM的所有RPC接口,包括应用程序提交,应用程序终止,获取队列信息,群集统计信息等操作。

AdminService

为了确保管理请求不会由于普通用户的请求而长时间没有响应,并且为操作员的命令提供更高的优先级,所有管理操作(如刷新节点列表,队列的配置等)都将通过此单独服务 接口。

3.2 将RM连接到分布节点的组件

ResourceTrackerService

这是从群集中的节点获取心跳并将它们转发给YarnScheduler的组件。响应来自所有节点的RPC,注册新节点,拒绝来自任何无效/退役节点的请求,它与NMLivelinessMonitor和NodesListManager紧密协作。

NMLivelinessMonitor

跟踪活动节点和死节点。该组件跟踪每个节点的上一次心跳时间。任何在配置的时间间隔内不发送心跳的节点(默认为10分钟)将被视为死节点并由RM标注过期。当前在过期节点上运行的所有容器都被标记为过期或者不活动容器,并且不会有新的容器正在该节点上进行调度。

NodesListManager

管理有效和排除的节点。负责读取主机配置文件,并根据这些文件为节点初始列表分类。跟踪随时间推移而退役的节点。

3.3与每个应用程序AM进行交互的组件

ApplicationMasterService

为来自所有AM的RPC提供服务,例如注册新AM,任何结束AM取消注销/取消注册请求,从所有正在运行的AM获取容器分配和解除分配请求,并将它们转发给YarnScheduler。 因此,ApplicationMasterService和AMLivelinessMonitor协同工作以保持AM的容错性。

AMLivelinessMonitor

维护活动AM和无响应AM的列表,其职责是跟踪活动AM,通常在同步心跳的帮助下跟踪AM活动或不响应与否,并从资源管理器注册和取消注册AM。 对于过期的AM,其当前正在运行/分配给AM的所有容器都将被标记为不活动容器。

3.4  ResourceManager的核心 – 调度程序和相关组件

ApplicationsManager

负责维护提交的应用程序的集合。同时,在应用程序完成后很长一段时间内,通过用户界面或命令行来保存已完成应用程序的信息,以便为用户的请求提供服务。

ApplicationACLsManager

RM需要将面向API的用户设置为只能由授权的用户访问,例如客户端和管理员的请求。此组件维护每个应用程序的ACL列表,并在收到如结束应用程序一样的请求时查看应用程序状态。

ApplicationMasterLauncher

维护一个线程池以启动新提交的应用程序的AM以及之前由于某种原因退出的AM尝试的应用程序。当应用程序正常结束或强制终止时,还负责清理AM。

YarnScheduler

Yarn Scheduler负责将资源分配给各种正在运行的应用程序。它还根据应用程序的资源需求执行其调度功能。例如,内存,CPU,磁盘,网络等。目前只支持内存,对CPU的支持即将完成。

ContainerAllocationExpirer

该组件负责确保所有分配的容器被AM使用并随后在相应的NM上启动。 AM作为不信r认的用户代码运行,并可能在不使用它们的情况下保留分配而不释放,因此可能导致集群利用率不足。为解决这个问题,ContainerAllocationExpirer维护在相应的NM上仍未使用的分配容器的列表。对于任何Container,如果相应的NM没有向RM报告任何Container在配置的时间间隔内已开始运行,默认情况下为10分钟,则该Container被认为已经死亡并且已经过期。

3.5  TokenSecretManagers(安全)

Hadoop  YARN资源管理器拥有一套SecretManagers,用于管理令牌并且在各种RPC接口上验证/授权请求的密钥。简要总结如下:

ApplicationTokenSecretManager

RM为每个应用程序使用ApplicationTokens来避免任意进程发送RM调度请求。该组件将每个令牌本地保存在内存中,直到应用程序结束。然后使用它来验证来自有效的AM进程的任何请求。

ContainerTokenSecretManager

RM向特定节点上的容器发布名为Container Tokens到ApplicationMaster(AM)。因此,AM使用这些令牌创建与具有运行作业的容器的NodeManager的连接。

RMDelegationTokenSecretManager

ResourceManager特定的授权令牌管理器。它负责为客户端生成委托令牌,这些令牌也可以传递给希望能够与RM交互的未经认证的进程。

3.6 DelegationTokenRenewer

在安全模式下,RM被Kerberos认证。 提供了代表应用程序更新文件系统令牌的服务。 只要应用程序运行并且令牌可以再续订,该组件就会更新提交的应用程序的令牌。

NameNode和DataNode的职责和功能与MRV1中的相同。 下面的框图总结了YARN框架中作业的执行流程。

1542028746541359.png

YARN Resource Manager

发表评论

邮箱地址不会被公开。 必填项已用*标注

五十 六 ÷ = 八

滚动到顶部