美文网首页
Mesos 资源分配&调度

Mesos 资源分配&调度

作者: imsilence | 来源:发表于2017-05-04 11:49 被阅读249次

    资源分配&调度

    mesos采用双层调度方案, master决定将多少资源分配给framework, 如何使用由framework决定, 流程:

    1. 框架向master注册
    2. master从slave获取资源offer,调用分配模块函数决定将资源分配给哪个框架
    3. 框架调度器接收资源offer,检查offer是否合适,若合适接受offer并发送task列表给master,若不合适则拒绝该offer
    4. master得到框架的接受、拒绝消息,若接受则并做相应的检查后将task信息发送给对应的slave
    5. slave分配所请求的资源并运行任务执行器,执行器运行框架下的任务
    6. 框架调度器接收任务任务运行状态,同时框架调度器继续接收offer并在合适的时机启动任务
    7. 框架注销后不在接收任何offer

    Mesos通过支配资源公平算法(DRF)进行资源分配
    概念:
    最大-最小资源公平算法:
    支配资源:在总资源比例最大的资源类型
    支配比例:支配资源所在总资源的比例
    例如:总资源为<8 CPU, 32 G>,框架A申请<2CPU, 1G>, 则支配资源为max([2/8, 1/32]),即cpu为支配资源,其支配比例为25%
    DRF算法是在每个框架的支配资源上在利用最大-最小资源公平算法进行资源分配

    Mesos FrameworkInfo中的用户角色可以用来决定资源的分配,可以每个用户或者每个框架一个角色,或者多个用户和框架共享一个角色,若未显示设置,则为运行框架调度器的用户

    加权DRF:
    在Mesos master启动时可以通过--weights和--roles设置加权DRF, --weights后接角色/权重列表格式为role1=weight1,权重为非整数,且roles中设置的角色必须都在weights设置权重

    静态预留:
    在slave上可以通过resource参数设置某部分资源只能由某角色使用,格式为name(role)value的列表,若没有指定角色的资源和未出现的资源将被划分到默认角色下, 例如
    --resources="cpus:4;mem:2048;cpus(product):8;mem(product):4096"
    指将8个cpu,4096M内存的slave预留给product角色
    修改resources属性后需要重启slave

    动态预留:
    在framework接受到offer可以发送Offer::Operations::Reserve和Offer::Operations::Unreserve管理预留资源
    也可以通过/reserve和/unreserve两个restapi对资源预留进行管理,此时不需要重启slave

    相关文章

      网友评论

          本文标题:Mesos 资源分配&调度

          本文链接:https://www.haomeiwen.com/subject/svvrtxtx.html