一、Yarn简介

1、yarn是什么

  • 一种新的Hadoop资源管理器,一个通用资源管理系统
  • 为上层提供统一的资源管理与任务调度及监控,提高了集群管理效率、资源使用率、数据共享效率

    2、yarn特点

  • 资源管理和资源调度解耦的框架,提高资源利用率

  • 运维成本下降,只需要运维一个集群,同时满足多种业务需求
  • 集群内数据共享一致
  • 避免单点故障,集群资源拓展得到解决

    二、Yarn架构设计

    核心思想是将JobTracker的两个主要职责:资源分配和任务调度交给两个角色。
    一个是ResourceManager,一个是每一个应用中唯一的ApplicationMaster
    图片.png

    1、各模块的主要功能

  • Client:作为用户编程的接口与ResourceManager进行交互。

  • ResourceManager:整个集群只有一个存活的,负责整个集群的资源分配和任务调度。处理来自客户端的请求,监控ApplicationMatser,监控NodeManager并接收心跳检测。
  • NodeManager:集群有多个,负责单个节点的资源管理和使用。处理来自ApplicationManager的命令,处理来自ResourceManager的命令,周期性的向ResourceManager汇报资源使用情况。
  • ApplicationMaster:每个应用程序特有的,负责应用程序的管理。数据切分,为作业向ResourcesManager申请资源,与NodeManager通信,任务监控,处理来自ResourceManager的命令。
  • Container:对任务运行环境的抽象。

    2、运行流程

    图片.png

    三、yarn调度策略

    1、MRv1的调度方式

    集中调度,扩展性差。
    容易发生单点故障。
    不支持新的调度策略。

    2、Yarn双层调度架构

    将传统的集中调度器一分为二:
    资源管理(ResourceManager)、任务调度(ApplicationMaster)

    3、常用调度策略

  1. FIFO(先进先出)默认的队列内部调度器,只有一个队列,所有用户共享。缺点:大的任务可能会占用所有资源。导致队列被阻塞。
  2. CS(容器调度器)每个用户会分配专用的资源,不支持抢占式,队列内部默认使用FIFO。
  3. FS(公平调度器)为所有用户分配公平的资源。

    四、Yarn shall命令

  • 直接输入yarn即可查看所有一级命令。
  • yarn version 查看版本信息。
  • yarn jar 提交jar包。
  • yarn classpath 获取yarn运行时的classppath。
  • yarn application -list 获取所有正在运行的application列表。
  • yarn application kill app-id 杀死指定的application。
  • yarn top 查看当前使用情况。

    五、Yarn特征说明

    1、统一的资源管理与任务调度框架

    图片.png

    2、双层调度框架

    图片.png

    3、容错性的实现

  • 同时启动多个ResourceManager,但是只有一个是active的。

  • ApplicationMaster挂掉后,由ResourceManager负责重启。其中会保存已经完成的task,重启后无需再次执行。
  • 通过心跳把信息反馈给AM,或者心跳超时被AM感知,由AM通过重试恢复Task。