分布式资源调度框架YARN

一.YARN产生背景

Hadoop1.x版本最大的问题是资源问题

  • 对数据处理和资源调度主要依赖于MapReduce完成,只能运行MapReduce程序
  • JobTracker 负责资源管理和程序调度,压力较大

Hadoop1.x版本其他问题

  • 1.单点故障:JobTracker只有一个,如果JobTracker出故障,整个集群就无法使用
  • 2.仅支持MapReduce计算框架,不支持其他类型的计算框架

Hadoop2.x版本添加YARN

  • 主要负责集群资源管理

二.YARN(Yet Another Resource Negotiator)概述

YARN核心思想是将资源管理和任务监控和调度分离

  • 通用的资源管理系统,可为不同的应用(MapReduce、Spark、Flink等)提供统一的资源管理和调度
  • 它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处

三.YARN的基本架构核心组件

(一)YARN架构

YARN的架构是master/slaves的主从架构

  • master:ResourceManager->全局资源管理
  • 负责集群全局统一的资源管理、调度、分配
  • slave:NodeManager->节点资源管理器
  • 启动了NodeManager进程的节点
  • 负责管理节点的资源及使用情况

YARN核心组件(包含ResourceManager和NodeManager)

  • ApplicationMaster
  • Container

详细描述如下:

  • YARN由Client, ResourceManager, NodeManager, ApplicationMaster, 组成,也采用master/slaves主从架构,一个ResourceManager对应多个NodeManager
  • 1)Client向ResourceManager提交任务,终止任务
  • 2)ApplicationMaster由对应的应用程序完成:每个应用程序对应一个ApplicationMaster,ApplicationMaster向ResourceManager申请资源用于在NodeManager上启动相应的任务
  • 3)NodeManager通过心跳信息向ResourceManager汇报自身的健康状况任务执行情况,领取任务情况等
  • 4)Map Task对应的是MapReduce作业启动时产生的Map任务,MPI Task 是MPI框架(MPI是消息传递接口,可以理解为更原生的一种分布式模型)对应的执行任务

(二) 核心组件

1.ResouceManager

ResourceManager组成

  • ResourceScheduler->资源调度器,根据节点的容量、队列情况,为应用程序分配资源
  • Application Manager->应用程序管理器,负责接受Client端传输的job请求

ResourceManager功能

  • 处理客户端请求
  • 监控NodeManager
  • 启动和监控ApplicationMaster,进行必要的重启
  • 整个系统的资源分配和调度

2.YARN架构核心组件-NodeManager

NodeManager功能

  • 本节点上的资源管理和任务管理
  • 定时向ResourceManager汇报本节点上的资源使用情况和各个Container的运行情况
  • 接收和处理来自ResourceManager的Container启动和停止的各种命令
  • 处理来自ApplicationMaster的指令,比如启动MapTask和ReduceTask指令

3. YARN架构核心组件-ApplicationMaster

ApplicationMaster功能

  • 每个应用程序对应一个ApplicationMaster,负责单个应用程序的管理
  • 负责数据切分
  • 为应用程序向ResourceManager申请资源(Container),并分配内部任务(MapTask和ReduceTask)
  • 与NodeManager通信来启动/停止任务,Task都是运行在Container中的
  • 负责任务的监控和容错,当某些Task运行出错,进行容错处理

4. YARN架构核心组件-Container

  • Container是YARN中的资源抽象,封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等
  • Container类似于一个虚拟机,可以在上面执行任务

5. YARN的工作机制如下图:

在这里插入图片描述

(三) YARN的资源调度器

目前Hadoop作业调度器有三种

  • FIFO:先进先出调度器
  • Capacity Scheduler:容量调度器
  • Fair Scheduler:公平调度器

默认的作业调度器可以在yarn-default.xml文件中查看,属性如下

  • yarn.resourcemanager.scheduler.class
  • Hadoop版本2.6.0-cdh5.14.2的默认调度器是公平调度器

(四) YARN常用命令

任务管理

  • 1)查看正在运行的任务,如下图(这里没有任务在运行,因此没有显示):
  • yarn application -list
    在这里插入图片描述
  • 2)杀掉正在运行的任务
  • yarn application -kill 任务id

节点管理

  • 1)查看节点列表
  • yarn node -list
    在这里插入图片描述
  • 2)查看节点状态
  • yarn node -status 节点ID
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/sun_0128/article/details/107098389