• Hadoop YARN主资源调度算法


    来源:《Hadoop技术内幕: 深入解析YARN架构设计与实现原理》 (董西成) 第6章 资源调度器

    为了支持多维资源调度,YARN资源调度器采用了主资源公平调度算法(Dominant Resource Fairness,DRF),该算法扩展了最大最小公平(max-min fairness)算法,使其能够支持多维资源的调度。由于DRF被证明非常适合应用于多资源和复杂需求的环境中,因此被越来越多的系统采用,包括Apache Mesos。
    在DRF算法中,将所需份额(资源比例)最大的资源称为主资源,而DRF的基本设计思想则是将最大最小公平算法应用于主资源上,进而将多维资源调度问题转化为单资源调度问题,即DRF总是最大化所有主资源中最小的,其算法伪代码如下:

    function void DRFScheduler()
      R ← <r1, …, rm>; //m种资源对应的容量
      C ← <c1, …, cm>; //已用掉的资源,初始值为 0
      si (i = 1..n); //用户(或者框架)i的主资源所需份额,初始化为0
      Ui← <ui,1, …, ui,m> (i = 1..n) // 分配给用户i的资源,初始化为0
     挑选出主资源所需份额si最小的用户i;
     Di ← {用户i的下一个任务需要的资源量};
     if C + Di <= R then
      //将资源分配给用户i
      C ← C + Di; //更新C
      Ui ← Ui + Di; //更新U
      si = maxmj=1{ui,j/rj};
     else
      return; //资源全部用完
     end if
    end function

    下面我们看一个实例。假设系统中共有9个CPU和18GB RAM,有两个用户(或者框架)分别运行了两种任务,需要的资源量分别为<1CPU,4GB>和<3CPU,1GB>。对于用户A,每个任务要消耗总CPU的1/9(份额)和总内存的2/9,因而A的主资源为内存;对于用户B,每个任务要消耗总CPU的1/3和总内存的1/18,因而B的主资源为CPU。DRF将最大化所有用户的主资源,具体分配过程如表6-1所示。最终,A获取的资源量为<3CPU,12GB>,可运行3个任务;而B获取的资源量为<6CPU,2GB>,可运行2个任务。

    表6-1 DRF算法的调度序列

  • 相关阅读:
    Angular1.0
    当今流行的 React.js 适用于怎样的 Web App?
    bower的权限问题
    淡定啊淡定
    JBoss for luna
    JQuery的二维码插件
    今天学人家玩云主机
    laravel5.2/laravel5.3入门指南 Windows 上快速安装并运行 Laravel 5.x
    验证mySqli扩展是否
    Amazon EC2 的名词解释
  • 原文地址:https://www.cnblogs.com/144823836yj/p/14758951.html
Copyright © 2020-2023  润新知