Hadoop3.x组件YARN入门

一、什么是YARN

Hadoop YARN是一种新的Hadoop资源管理器,虽然是Hadoop的组件,但是它被设计成一个通用的资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度。YARN的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大的好处。

二、为什么需要YARN

在Hadoop1.x时代,资源管理和任务的调度工作是MapReduce承担的,到了Hadoop2.x,这两个功能才被从MapReduce中拆出来单独形成了YARN组件:

  • 资源管理,负责为任务提供集群的硬件资源,比如内存、CPU之类的;

  • 调度平台,当有多个任务需要执行资源的时候,YARN负责规划和调度;

YARN的由来

YARN有点类似我们的操作系统,它不仅仅支持MapReduce计算框架,理论上能支持任何计算框架,YARN并不关心程序怎么执行,只关心任务程序需要什么资源,需要多少资源,用完之后归还资源,正因为此,后来的计算框架比如Spark、Storm、Tez等计算框架都可以在HDFS和YARN的基础上构建起来。

基于HDFS和YARN的计算框架

三、YARN是怎么工作的

YARN集群中总共可以分为如下五种角色:

  • Client,提交任务的客户端;

  • ResourceManager,YARN集群的主角色,负责接收客户端的作业提交,并通过HDFS集群中的NameNode来管理和分配各个机器节点上的资源;

  • NodeManager,YARN集群的从角色,每个机器节点上都有一个,负责管理本机器上的资源,会根据ResourceManager的命令来在本机器上启动和监视容器资源的使用情况并报告给ResourceManager;

  • ApplicationMaster(AM),客户端提交的每一个任务作业会对应一个AM,用来为作业的各个阶段申请资源,并监控作业所有Container的运行情况,并汇报给ResourceManager;

  • Container容器,任务被隔离在容器中运行,相互之间不影响,如上的ApplicationMaster、MapReduce中的MapTask和ReduceTask都是以容器的方式运行在集群中;

YARN集群架构图

一个任务从提交到执行完毕的大致流程如下:

  1. 客户端向ResourceManager提交任务;
  2. ResourceManager为该任务分配第一个容器,并告知对应的NodeManager,要求它在这个容器内启动该任务的ApplicationMaster;
  3. ApplicationMaster启动后,向ResourceManager注册并保持通信,如此用户可以通过ResourceManager实时查看任务的处理进度和状态;
  4. ApplicationMaster为本次任务需要执行的所有Task向ResourceManager申请资源;
  5. ApplicationMaster申请到资源后与分配到的NodeManager通信,要求启动这些任务;
  6. NodeManager启动任务容器;
  7. 各个任务容器定时向ApplicationMaster汇报自己的状态和进度,让ApplicationMaster掌握整个任务作业的执行进度和状态;
  8. ApplicationMaster监测到任务作业执行完毕后,向ResourceManager注销并关闭自己;
YARN资源申请流程示意

当有多个任务都提交时,集群的资源总是有限的,所以此时YARN该如何调度这些任务执行从而合理地利用集群资源呢?这个工作就主要由ResourceManager中的Scheduler组件负责。通常提供如下三种调度策略:

  • FIFO,先进先出调度器,资源先到先得,任务优先级高低不能影响执行的先后顺序,适用于负载较低的小规模集群;
FIFO调度策略
  • Capacity,容量调度器,是默认的调度器,每个组织可以独享拥有自己的资源队列,组织提交的任务都会被调度到自己的资源队列中执行,从而确保组织自己有资源上下限来运行任务,不会被别的组织占有,但是组织自己队列中的任务是FIFO模式的;
Capacity调度策略
  • Fair,公平调度器;在Capacity的基础上,允许任务在多个队列间工作,允许资源的共享和抢占,从而使得每个组织队列的任务都能得到执行的情况下,合理利用空闲资源供给别的队列的任务使用;
Fair调度策略

你可能感兴趣的:(Hadoop3.x组件YARN入门)