YARN架构简介

Apache Hadoop YARN (Yet Another Resource Negotiator,另外一种资源协调者)是一种新的 Hadoop 资源管理器。node

它的基本设计思想是将MRv1中的JobTracker拆分红了两个独立的服务:一个全局的资源管理器ResourceManager和每一个应用程序特有的ApplicationMaster。其中ResourceManager负责整个系统的资源管理和分配,而ApplicationMaster负责单个应用程序的管理。
网络




YARN 分层结构的本质是 ResourceManager。这个实体控制整个集群并管理应用程序向基础计算资源的分配。ResourceManager 将各个资源部分(计算、内存、带宽等)精心安排给基础 NodeManager(YARN 的每节点代理)。ResourceManager 还与 ApplicationMaster 一块儿分配资源,与 NodeManager 一块儿启动和监视它们的基础应用程序。在此上下文中,ApplicationMaster 承担了之前的 TaskTracker 的一些角色,ResourceManager 承担了 JobTracker 的角色。架构


ApplicationMaster 管理一个在 YARN 内运行的应用程序的每一个实例。ApplicationMaster 负责协调来自 ResourceManager 的资源,与NM通讯以启动/中止任务,并经过 NodeManager 监视容器的执行和资源使用(CPU、内存等的资源分配)。框架


NodeManager 管理一个 YARN 集群中的每一个节点。NodeManager 提供针对集群中每一个节点的服务,从监督对一个容器的终生管理到监视资源和跟踪节点健康。另外一方面,它接收并处理来自AM的Container启动/中止等各类请求。oop


Container:Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当AM向RM申请资源时,RM为AM返回的资源即是用Container表示。YARN会为每一个任务分配一个Container,且该任务只能使用该Container中描述的资源。
spa


 YARN整体上仍然是master/slave结构,在整个资源管理框架中,resourcemanager为master,nodemanager是slave。Resourcemanager负责对各个nademanger上资源进行统一管理和调度。当用户提交一个应用程序时,须要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManger启动能够占用必定资源的任务。因为不一样的ApplicationMaster被分布到不一样的节点上,所以它们之间不会相互影响。设计

应用程序的提交过程代理

在 ResourceManager 接受一个新应用程序提交时,Scheduler 制定的第一个决策是选择将用来运行 ApplicationMaster 的容器。在 ApplicationMaster 启动后,它将负责此应用程序的整个生命周期 首先也是最重要的是,它将资源请求发送到 ResourceManager,请求运行应用程序的任务所需的容器。资源请求是对一些容器的请求,用以知足一些资源需求。blog

若是可能的话,ResourceManager 会分配一个知足 ApplicationMaster 在资源请求中所请求的需求的容器(表达为容器 ID 和主机名)。该容器容许应用程序使用特定主机上给定的资源量。分配一个容器后,ApplicationMaster 会要求 NodeManager(管理分配容器的主机)使用这些资源来启动一个特定于应用程序的任务。此任务能够是在任何框架中编写的任何进程(好比一个 MapReduce 任务或一个 Giraph 任务)。NodeManager 不会监视任务;它仅监视容器中的资源使用状况,举例而言,若是一个容器消耗的内存比最初分配的更多,它会结束该容器。
生命周期

ApplicationMaster 会不遗余力协调容器,启动全部须要的任务来完成它的应用程序。它还监视应用程序及其任务的进度,在新请求的容器中从新启动失败的任务,以及向提交应用程序的客户端报告进度。应用程序完成后,ApplicationMaster 会关闭本身并释放本身的容器。

尽管 ResourceManager 不会对应用程序内的任务执行任何监视,但它会检查 ApplicationMaster 的健康情况。若是 ApplicationMaster 失败,ResourceManager 可在一个新容器中从新启动它。能够认为 ResourceManager 负责管理 ApplicationMaster,而 ApplicationMasters 负责管理任务。


所以能够总结,相比传统的MapReduce,YARN提供了更强大的可伸缩性和灵活性。对原有的架构进行了去中心化的处理,将资源管理和任务协调分为两个不一样的进程来处理。

相关文章
相关标签/搜索