YARN

YARN


Yarn是一个资源调度平台,负责为运算程序提供服务运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序.

Yarn基本架构

YARN主要由ResourceManager/NodeManager/ApplicationMaster和Container等组件构成


  • 调度器定义,区别-pp

    1. Hadoop调度器重要分为三类:

      FIFO/Capacity Scheduler(容量调度器)和Fair Sceduler(公平调度器).

      Hadoop2.7.2默认的资源调度器是 容量调度器

    2. 区别:

      FIFO调度器:先进先出------------会出现队列阻塞的问题(一般不使用)YARN


      容量调度器:支持多个队列源量进行限定,选择一个正在运行的任务数与其计算资源之间比值最小的队列,队列内任务按照作业优先级/提交时间/用户资源量限制和内存限制进行排序.------------------多个FIFO队列
      YARN

      • 支持多个队列,每个队列可配置一定的资源量,每个队列采用FIFO调度策略.
      • 为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定.(限购,每个食堂的窗口只能买一次饭)
      • 首先,计算每个队列中正在运行的任务数与其应该分得的计算资源之间的比值,选择一个该比值最小的队列–最闲的
      • 其次,按照作业优先级和提交时间顺序,同时考虑用户资源限制和内存限制对队列任务排序.
      • 三个队列同时按照任务的先后顺序依次执行,eg:job1/job2/job3分别排在队列最前面,先进行,也是并行运行.

      公平调度器:支持多队列多用户,每个队列中的资源量可以配置,同一队列中的作业公平共享队列中所有资源,每个队列中的job按照优先级分配资源,优先级越高分配越多,在资源有限的情况下,每个job理想获得的计算资源与真实获得的计算资源的差值叫做缺额,同一队列中,job的资源缺额越大,越优先执行,可以多个任务同时运行.--------------------所有的任务都能获得资源,只是分配资源的大小不一样.好处灵活YARN

      • 比如有三个队列:queueA/queueB/queueC,每个队列中的job按照优先级分配资源,优先级越高分配的资源越多,但是每个job都会分配到资源以确保公平.

      • 在资源有限的情况下,每个job理想情况下获得的计算资源与实际获得的计算资源存在一种差距,这个差距就叫做缺额

      • 在同一队列中,job的资源缺额越大,越先获得资源优先执行.作业是按照缺额的高低类先后执行的,而且可以看到上图有多个作业同时运行.

      • 支持多队列多用户,每个队列中的资源量可以配置,同一队列中的作业公平共享队列中所有资源.