Hadoop——YARN

MapReduce1

  • 架构

    image

  • 工作流程

    image

  • 局限性

JobTracker有多忙?

  1. 作业调度(任务安排给TaskTracker)
  2. 任务进度监控(跟踪任务、重启失败的任务;记录任务流水)
  • JobTracker访问压力大,影响系统扩展性,不适合所有大型计算。主要表现在大型集群上。官方称当节点数达到4000,任务数达到40000,MapReduce会遇到可扩展瓶颈

  • 难以支持除MapReduce以外的框架,如Spark、Storm等。

  • JobTracker单点故障(因为Hadoop1.0的本身就有单点故障)。


MapReduce2

image

可以理解为 MapReduce2 = MapReduce1 +YARN

  • 什么是YARN

    • YARN(Yet Another Resource Negotiator)另一种资源协调者,也就是资源调度框架
    • 最初是为了改善MapReduce的实现,但也是一种资源调度框架,具有通用性,可为上层应用提供统一的资源管理和调度,可以支持其他的分布式计算模式(Spark)
    • 它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
  • Hadoop生态圈

    image


Yarn架构

image

  • Container(容器)

Container是Yarn中资源的抽象,它封装了某个节点上的多维度资源。

  • ResouceManager(资源管理器)

    负责整个系统的资源分配和管理,是一个全局的资源管理器。由调度器和应用程序管理器组成

    • 调度器(Scheduler)

      调度器根据资源情况为应用程序分配封装在Container中的资源

    • 应用程序管理器(Application Manager)

      应用程序管理器负责管理整个系统中所有应用程序

  • NodeManager(节点管理器)

    NodeManager是每个节点上的资源和任务管理器

    • 定时向ResouceManager汇报本节点上的资源使用情况和各个Container的运行状态
    • 接受并处理来自ApplicationManager的Container启动/停止等请求。
  • ApplicationMaster(主应用)

    ApplicationMaster是一个详细的框架库,它结合从ResourceManager获得的资源和NodeManager协同工作来运行和监控任务

    用户提交的每一个应用程序均包含一个ApplicationMaster

    1. 与ResourceManager调度器协商以获取抽象资源(Container)
    2. 负责应用的监控、跟踪应用执行状态、重启失败任务等
    3. 并与NodeManager协同工作完成Task的执行和监控
  • 应用(Application)运行机制(流程)

    image

  • 任务进度监控

    image

  • MapReduce1和YARN组成的对比

    分工 MapReduce1 YARN
    ①作业调度
    ②任务进度监控
    (跟踪任务、重启失败的任务、记录任务流水)
    JobTracker ResourceManager → 作业调度
    Application Master → 任务进度监控
    任务执行(或结点资源管理) TaskTracker NodeManager
    资源调配单元(CPU、内存等) Slot(槽) Container(容器)
  • YARN对MapReduce运行性能提升

    • 主要特点:ResourceManager与Application Master分离
    • 性能提升:可以扩展支持1W个节点,10W个任务

YARN调度器

​ 假如一个工厂接到了很多订单,第一个订单是1W件,第二个订单是50件,第三个订单是4k件...等等。工厂的工人是有限的,应该采用什么策略来安排达到资源利用率最高?这就是调度器所考虑的。

  1. FIFO Scheduler (先进先出调度器)

    • 最简单的调度器

    • job1运行完后,job2才能获取到资源

image

  1. Capacity Scheduler

    • 分成多个队列,每个队列占用一定资源。可以看作是FIFO Scheduler的多队列版本

    • 每个队列可以限制资源使用量。但是,队列间的资源分配以使用量作排列依据,使得容量小的队列由竞争优势。

    • 如果不限制某队列的最大容量,则运行过程中,它可以占用全部资源。

    • YARN默认采用Capacity Scheduler调度器

      image

  2. Fair Scheduler

    1. 刚开始job1占用100%资源
    2. job2提交后,job1、job2各占50%资源
    3. job2运行完后,job1又占100%

image

  1. 三种调度器比较

    调度器 工作方法
    FIFO Scheduler ①单队列
    ②先进先出的原则
    Capacity Scheduler ①多队列
    ②计算能力调度器,选择资源使用量占用最小、优先级高的先执行
    ③多用户情况下,可以最大化集群的吞吐和利用率
    Fair Scheduler ①多队列
    ②公平调度,所有的job具有相同的资源
posted @ 2021-04-20 19:40  Karl1  阅读(146)  评论(1)    收藏  举报