其他分享
首页 > 其他分享> > Yarn:分布式资源调度原理分析

Yarn:分布式资源调度原理分析

作者:互联网

在这里插入图片描述

Yarn(Yet Another Resource Manager)是Hadoop 2.0版本推出的一款计算资源管理调度框架,用于统一对MapReduce、Hive等大数据计算任务提供资源调度管理服务。
1.为什么需要Yarn
在Hadoop 1.0版本中,MapReduce通过TaskTracker和JobTracker来完成Map/Reduce Task计算程序的分发工作,这使得计算程序的分发和执行耦合,但是在Hadoop 1.0时期并没有产生很大的负面影响。

随着Hadoop的流行,逐渐地Hadoop成为了大数据生态的标准,越来越多的基于Hadoop生态的大数据技术和框架出现,这时开发者发现为了支持“计算资源调度和分发”,需要框架自身来实现十分复杂:
在这里插入图片描述

所以为了将资源调度和计算过程解耦,也为了让更多大数据技术能够有统一的Hadoop接入标准以及简化资源调度流程,将资源调度程序从MapReduce中剥离并改造,Yarn(Yet Another Resource Manager)在这个背景下出现了,使用Yarn可以对所有接入Hadoop体系的大数据框架进行统一的资源调配,从而达到资源分发调度与计算过程这两个阶段的分离:
在这里插入图片描述

所以从Hadoop 2.0开始,Yarn和Hdfs及MapReduce组成了Hadoop体系的核心组件,为整个大数据资源分发调度做统一的接入及管理。

在这里插入图片描述

2.Yarn的组成
Yarn的组成包括:ResourceManager(RM)、NodeManager(NM)、ApplicationMaster(AM)以及容器(Container)四个部分,分别来介绍下各个部分的作用:

在这里插入图片描述

其中资源管理器ResourceManager进程会在独立集群上部署,而节点管理器会遍布在Hadoop集群各个节点之上,每个DataNode节点都会存在节点管理器NodeManager进程。
3.Yarn的工作流程
当提交一个MapReduce任务给Yarn进行调度时,核心的工作流程如下:

  1. 客户端首先准备好MapReduce ApplicationMaster、MapReduce任务以及MapReduce任务启动程序,提交三者到资源管理器ResourceManager上。
  2. 资源管理器ResourceManager和NodeManager通信,首先分配第一个容器Container,然后在上面运行MapReduce ApplicationMaster。
  3. 该MapReduce ApplicationMaster启动后向资源管理器ResourceManager请求申请任务运行容器资源。
  4. 获取到任务运行容器资源后,立即和该容器所属的节点管理器NodeManager通信,将MapReduce程序分发到该NodeManager的容器上运行。
  5. MapReduce任务在运行期和MapReduce ApplicationMaster通信,汇报自己的运行状态,如果运行结束,MapReduce ApplicationMaster向ResourceManager注销并释放所有的容器资源。
    在这里插入图片描述

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

4.Yarn调度器
Yarn通过资源管理器ResourceManager来统一管理资源的调度,而ResourceManager又包括了两部分,即调度器和资源管理器,对资源的调度实质是由调度器来完成。Yarn调度器内置了几种资源调度算法,包括 FIFO、Fair Scheduler、Capacity Scheduler等,默认采用的调度策略是Capacity Scheduler。调度器本质上是一个资源分配队列,所以通常会将Yarn成为Yarn调度队列服务。

标签:调度,ResourceManager,Hadoop,ApplicationMaster,Yarn,MapReduce,分布式
来源: https://blog.csdn.net/pbrlovejava/article/details/120253605