Hadoop大数据原理(4) - 资源调度框架Yarn

1. Yarn的由来

  Yarn并不是随Hadoop的推出一开始就有的,Yarn作为分布式集群的资源调度框架,它的出现伴随着Hadoop的发展,使Hadoop从一个单一的大数据计算引擎,成为一个集存储、计算、资源管理为一体的完整大数据平台,进而发展出自己的生态体系,成为大数据的代名词。

  在MapReduce的架构中,在MapReduce应用程序的启动过程中,最重要的就是要把MapReduce程序分发到大数据集群的服务器上,在Hadoop1中,这个过程主要是通过TaskTracker和JobTracker通信来完成。

  这样的缺点就是:服务器集群资源调度管理和MapReduce执行过程耦合在一起,如果想在当前集群中运行其他计算任务,比如Spark或者Storm,就无法统一使用集群中的资源了。

  由于上述缺点,需要把MapReduce的资源管理和计算框架分开,这也是Hadoop2最主要的变化,就是将Yarn从MapReduce中分离出来,成为一个独立的资源调度框架。

2. Yarn的架构

  架构图如下:

Yarn架构图

2.1 资源管理器

  ResourceManager进程负责整个集群的资源调度管理,通常部署在独立的服务器上

调度器

  调度器是一个资源分配算法,根据应用程序(Client)提交的资源申请和当前服务器集群的资源状况进行资源分配。Yarn 内置了几种资源调度算法,包括Fair Scheduler、Capacity Scheduler等,也可以开发自己的资源调度算法供Yarn调用。

程序管理器

  应用程序管理器负责应用程序的提交、监控应用程序运行状态等。

  应用程序启动后需要在集群中运行一个ApplicationMaster,ApplicationMaster也需要运行在容器里面。每个应用程序启动后都会先启动自己的ApplicationMaste,由ApplicationMaster根据应用程序的资源需求进一步向ResourceManager进程申请容器资源,得到容器以后就会分发自己的应用程序代码到容器上启动,进而开始分布式计算。

2.2 节点管理器

  NodeManager进程负责具体服务器上的资源和任务管理,在集群的每一台计算服务器上都会启动,基本上跟HDFS的DataNode进程一起出现。

3. Yarn的工作流程

  1. 向Yarn提交应用程序,包括:MapReduce ApplicationMaster、我们的MapReduce程序,以及MapReduce Application启动命令。

  2. ResourceManager进程和NodeManager进程通信,根据集群资源,为用户程序分配第一个容器,并将MapReduce ApplicationMaster分发到这个容器上面,并在容器里面启动MapReduce ApplicationMaster。

  3. MapReduce ApplicationMaster启动后立即向ResourceManager进程注册,并为自己的应用程序申请容器资源。

  4. MapReduce ApplicationMaster申请到需要的容器后,立即和相应的NodeManager进程通信,将用户MapReduce程序分发到NodeManager进程所在服务器,并在容器中运行,运行的就是Map/Reduce任务。

  5. Map/Reduce任务在运行期和MapReduce ApplicationMaster通信,汇报自己的运行状态,如果运行结束,MapReduce ApplicationMaster向ResourceManager进程注销并释放所有的容器资源。

  MapReduce如果想在Yarn上运行,需要开发遵循Yarn规范的MapReduce ApplicationMaster,同理其他大数据计算框架也可以开发遵循Yarn规范的ApplicationMaster,这样在一个Yarn集群中就可以同时并发执行各种不同的大数据计算框架,实现资源的统一调度管理了。

猜你喜欢

转载自blog.csdn.net/initiallht/article/details/124720982
今日推荐