yarn中的资源调度器_笔记

yarn中资源调度器共分为三种

yarn中的资源调度器_笔记

1.FIFO调度器
 优点是简单易懂而且不需要配置, 但是它不适合共享集群:
   在FIFO调度器中只有一个队列,而且同一时刻只能有一个作业执行,就会出现有一个大作业A一直在运行,而小文件B要阻塞到作业A执行完毕才能运行的情况
2.容量调度器
 1.它是yarn默认使用的调度器,如果不指定队列,那么应用都会被放在default的默认队列中(就和FIFO没区别了),
 2.如果在配置文件capacity-scheduler.xml中设置了队列(同时可以指定每个队列的最大容量比例),那么每一个队列都相当于一个FIFO,但是多个队列可以同时执行作业
 3.弹性队列:如果队列A中有多个作业,并且队列A容量不够用了,这时会把空闲的资源分配给队列A,但是不会超过设置的对大容量。
 设置最大容量是为了防止队列A抢占过多的资源,导致别的队列只能阻塞到队列A执行作业完毕或者等待别的队列释放空间
3.公平调度器
 1.要使用公平调度器,首先要配置yarn-site.xml文件yarn中的资源调度器_笔记

2.通过fair-scheduler.xml对公平调度器进行配置队列,所有的队列都是root的孩子
 同级别队列根据设置的权重进行百分比分配空间,假设有两个队列B和C,B的权重为4,C的权重为6,那么队列B就会占据队列A的40%空间,队列C为60%(不写默认为1,即对半分)
3.设置yarn.scheduler.fair.user-as-default-queue 为 false,应用就会呗放入默认的default队列,而不是各个用户队列了
4.在繁忙的集群中,当作业提交给一个空队列时,作业不会立刻启动,会等到别的作业释放了资源。
 抢占:队列A在执行,但是队列A抢占的资源超过了公平共享份额的队列容器,此时来了队列B要执行作业:
如果队列B在指定的时间内没有获得被承诺的最小共享资源(或者低于公平共享份额的一半),调度器就会抢占队列A的资源(队列A的容器会被重新分配到公平共享份额,此时作业一直在运行)
5.延迟调度:在一个繁忙的集群上,如果一个应用请求某个节点,那么极有可能此时有其他容器正在该节点上运行,此时等待一段时间(没几秒),能够增加在所请求的节点上分配到一个容器的机会,从而提高集群的效率。
 每个节点管理器周期性(默认一秒)向资源管理器发送心跳请求,同时携带了节点管理器中正在运行的容器、新容器中可用的资源等信息
 当使用延迟调度室,调度器会等待设定的最大数目的调度机会(错过调度机会的数量)发生,才会使用这个调度机会
  4.不要对最终的结果产生影响!!!