YARN--大数据的资源管理器

2018-08-06 17:16:31 浏览数 (1)

最初,Hadoop主要限于范例MapReduce,其中资源管理由JobTracker和TaskTacker完成。JobTracker将MapReduce任务传播到集群中的特定节点,理想情况下是具有数据的节点,或者至少位于同一机架中。TaskTracker是集群中从JobTracker接受任务(Map,Reduce和Shuffle操作)的节点。由于Hadoop已经超越了MapReudce(例如HBase,Storm等),Hadoop现在在架构上将资源管理功能与MapReduce的编程模型分离,这使Hadoop集群更通用。新的资源管理器称为MapReduce 2.0(MRv2)或YARN。现在MapReduce是在YARN容器中运行的一种应用程序,其他类型的应用程序可以一般地写在YARN上运行。

YARN采用主从模型,包括几个组件:

•全局资源管理器是在系统中所有应用程序之间仲裁资源的最终权威。

•每个应用程序的应用程序主服务器从资源管理器协商资源,并与节点管理器协作以执行和监视组件任务。

•每个节点的从节点管理器负责启动应用程序的容器,监视其资源使用情况并向资源管理器报告。

资源管理器由调度程序和应用程序管理器组成,是在集群中的各种竞争应用程序之间仲裁资源的中央机构。调度器负责根据容量,队列等的约束向各种运行的应用分配资源。应用管理器负责接受作业提交,协商用于执行应用专用应用主控的第一容器,并提供用于重新启动的服务应用程序主容器失败。

调度器使用包含诸如内存,CPU,磁盘,网络等元素的资源容器的抽象概念。最初,YARN使用基于内存的调度。每个节点配置有用于其任务的设定量的存储器和应用请求容器,具有可配置的存储器量。最近,YARN以相同的方式添加了CPU作为资源。节点配置有多个“虚拟核心”(vcore),应用程序在容器请求中给出一个vcore号码。

调度器具有可插入的策略插件,其负责在各种队列,应用等之间划分群集资源。例如,容量调度器被设计为使共享的多租户群集的吞吐量和利用率最大化。队列是容量调度程序中的主要抽象。每个队列的容量指定可用于提交到队列的应用程序的群集资源的百分比。此外,队列可以在层次结构中设置。 YARN还运行公平调度,试图分配资源给应用程序,使所有应用程序获得平等的资源份额平均使用主要资源公平。

YARN和应用程序之间的协议如下。首先,应用提交客户端与资源管理器通信以获取新的应用Id。然后通过向资源管理器提供足够的信息(例如本地文件/ jar,命令行,环境设置等)来启动应用程序主服务器来提交要运行的应用程序。然后,应用程序主服务器将向资源管理器注册自己,并请求和接收容器。在为其分配容器后,应用程序主服务器通过指定启动信息(如命令行规范,环境等)与节点管理器通信以启动其任务的容器。应用程序主服务器还处理作业容器的故障。一旦任务完成,应用程序主服务器发信号通知资源管理器。

作为YARN集群的中心机构,资源管理器也是单点故障(SPOF)。为了使其容错,可以采用主动/备用架构,因为Hadoop 2.4。可以启动多个资源管理器实例(在配置文件yarn-site.xml中列出),但只有一个实例在任何时间点处于活动状态,而其他实例处于待机模式。当活动下降或变得无响应时,另一个资源管理器由基于ZooKeeper的方法自动选择为活动。 ZooKeeper是一个复制的CP键值存储,我们将在后面详细讨论。客户端,应用程序主节点和节点管理器尝试以循环方式连接到资源管理器,直到它们命中新的活动

0 人点赞