Hadoop中的YARN简介
为了解决MapReduce1中的可伸缩性问题,设计了一个新的群集管理系统,该系统称为YARN(Yet Another Resource Negotiator)。 Yarn在Hadoop 2.x版本中引入,也称为MapReduce2. 这篇文章介绍了Hadoop中的YARN,还讨论了YARN架构和流程。
MapReduce1中的问题
在MapReduce1中,JobTracker既要进行作业调度,又要跟踪正在运行的任务(如任务的进度),并再次运行失败的作业。对JobTracker的过度依赖导致了非常大的集群中的可伸缩性问题。
Apache YARN
在YARN中,资源管理和作业计划/监视的功能被划分在两个单独的守护程序之间。
有一个ResourceManager可以管理整个群集中的资源,还有一个按应用程序的ApplicationMaster可以管理应用程序。
尽管YARN也被称为MapReduce2,但是Hadoop中的YARN旨在更加通用。在YARN中,每个应用程序ApplicationMaster是特定于框架的库。因此,任何基于YARN构建的分布式计算框架都可以作为YARN应用程序执行。因此,单个Hadoop集群可以同时运行MapReduce,Spark,Storm,Tez和更多此类分布式框架。
Hadoop中的YARN架构
在YARN中,有两个长期运行的守护程序ResourceManager和NodeManager构成数据计算框架。
然后是每个应用程序特定于应用程序的ApplicationMaster。
YARN中的ResourceManager – ResourceManager是主守护程序,它在系统中所有应用程序之间仲裁资源。 ResourceManager具有有关集群中节点和资源的信息,这是决定如何以及何时向任何应用程序提供资源的权限。
ResourceManager具有两个主要组件Scheduler和ApplicationsManager。
- 调度程序–调度程序负责将资源分配给各种正在运行的应用程序。计划程序不监视或者跟踪应用程序的状态。
- ApplicationsManager – ApplicationsManager负责接受作业提交,协商用于执行特定于应用程序的ApplicationMaster的第一个容器,并提供在失败时重新启动ApplicationMaster容器的服务。
YARN中的NodeManeger – NodeManager守护程序在群集中的每个节点上运行。它负责容器,监视其资源使用情况(CPU,内存,磁盘,网络),并将其报告给ResourceManager。
YARN中的ApplicationMaster –每个应用程序都启动ApplicationMaster。它负责从调度程序中协商适当的资源容器,跟踪其状态并监视进度。
YARN应用程序执行流程
提交客户端应用程序后,它将首先进入ResourceManager。 ResourceManager维护在集群上运行的所有应用程序和正在使用的集群资源的列表。
ResourceManager必须决定接下来要运行哪个提交的应用程序。这是由ResourceManager的Scheduler部分完成的。
ResourceManager的ApplicationsManager部分将协商第一个容器,在该容器中可以执行特定于应用程序的ApplicationMaster。
例如-如果提交的应用程序是MapReduce应用程序,它将在容器中启动MRAppMaster。
根据应用程序的进一步要求,ApplicationMaster会从调度程序中协商更多资源容器。
一旦容器被ResourceManager授予ApplicationMaster来运行其任务,ApplicationMaster将与在分配容器的节点上运行的NodeManager通信,以启动和管理容器的资源。
NodeManager负责启动和管理节点上的容器。容器执行AppMaster指定的任务。
下图显示了在用户提交的两个应用程序的帮助下的流程。一个是MapReduce应用程序,另一个是Spark应用程序。
将启动两个应用程序母带,一个用于MR,另一个用于Spark应用程序。