分布式技术原理与算法解析
聂鹏程
智载云帆 CTO,前华为分布式 Lab 资深技术专家
39663 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 43 讲
分布式技术原理与算法解析
15
15
1.0x
00:00/00:00
登录|注册

12 | 分布式调度架构之两层调度:物质文明、精神文明两手抓

平衡所有用户的主导资源占用率,尽可能试图最大化所有用户中最小的主导资源占用率
考虑用户对不同资源类型的需求
对于分配的资源不满足需求的用户,所获得的资源是相等的
不存在用户得到的资源超过自己需求的情况
按照用户对资源需求量递增的顺序进行空闲资源分配
Mesos双层调度机制容易导致资源碎片问题吗?原因又是什么呢?
Mesos的两层调度设计得非常巧妙
两层调度提供了多租户多框架的支持
容器的实质是进程,运行于属于自己的独立的命名空间
使用容器实现资源隔离
主导资源公平算法
最大最小公平算法
框架负责任务的管理与调度
Mesos Master上有一个调度器,负责管理并分配集群中的所有资源
资源管理集群和框架
Mesos和Hadoop YARN是典型的两层调度器
一层调度器负责资源管理和分配,另一层调度器负责任务与资源的匹配
解决单体调度的瓶颈问题
可能成为单点瓶颈
中央服务器统一管理和调度资源和任务
思考题
总结
两层调度的资源隔离
两层调度算法
Mesos的两层调度设计
两层调度
单体调度
如何理解分布式领域的两层调度

该思维导图由 AI 生成,仅供参考

你好,我是聂鹏程。今天,我来继续带你打卡分布式核心技术。
我在上一篇文章中,与你分享了单体调度。单体调度的核心是,所有节点的资源以及用户的任务均由中央服务器统一管理和调度。因此,中央服务器很容易成为单点瓶颈,会直接导致其支持的调度规模和服务类型受限。
于是两层调度就出现了。那么,到底什么是两层调度呢,它是如何设计的,又有哪些调度算法呢?接下来,就和我一起打卡分布式调度架构的两层调度,去探寻这些问题的答案吧。

什么是两层调度?

在单体调度架构中,中央服务器的单点瓶颈问题,会限制调度的效率和支持的任务类型。中央服务器的性能会限制调度的效率,很好理解,但为什么会限制支持的任务类型呢?
简单地说,这是因为不同的服务具有不同的特征,对调度框架和计算的要求都不一样。比如说,你的业务最开始时只有批处理任务,后来发展到同时还包括流数据任务,但批处理任务是处理静态数据,流数据任务却是处理实时数据。显然,单体调度框架会随着任务类型增加而变得越来越复杂,最终出现扩展瓶颈。
那么,为了提升调度效率并支持多种类型的任务,最直接的一个想法就是,能不能把资源和任务分开调度,也就是说一层调度器只负责资源管理和分配,另外一层调度器负责任务与资源的匹配呢。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

分布式系统中的两层调度架构是为了解决单体调度中的中央服务器单点瓶颈问题而提出的解决方案。该架构将资源和任务分开调度,一层调度器负责资源管理和分配,另一层调度器负责任务与资源的匹配。典型的两层调度器有Mesos和Hadoop YARN。Mesos实现了双层调度,其第一层调度器负责资源管理和分配,第二层调度器由框架完成任务调度。两层调度架构采用Resource Offer机制实现第一层和第二层调度的衔接,实现了任务调度与资源管理的分离。在资源分配算法方面,文章介绍了最大最小公平算法和主导资源公平算法,并对它们的执行流程和应用场景进行了详细说明。此外,文章还介绍了两层调度如何保证不同的业务不会互相干扰,强调了资源隔离的重要性,并指出Mesos通过容器实现了不同业务的资源隔离。总的来说,该文章深入浅出地介绍了分布式系统中的两层调度架构及相关资源分配算法,为读者提供了全面的技术视角和解决方案。文章通过Mesos为例,详细介绍了两层调度的架构设计和资源分配算法,强调了两层调度的优势和适用场景。同时,提出了思考题,引发读者对于两层调度架构的深入思考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式技术原理与算法解析》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(17)

  • 最新
  • 精选
  • new life
    老师你好 两层调度的时候,第一层将资源信息已经上报给 第二层,第二层根据上报的资源信息与任务匹配,在匹配完,二层为什么不直接下发任务给对应的服务器,而是下发给一层,由一层去调度,这样不是多了一步吗?难道一层还会修改任务的分配?

    作者回复: 这出于两点考虑:(1)架构的解偶性,第二层调度一般是框架的调度器,如果直接有第二层调度下发任务,则耦合很深,无法很少的适配不同的框架;(2)第二层调度统一管理资源的,如果上报给第二层调度的资源被使用,那么就不分配给其他框架,如果未被使用,第二层调度会将资源还回,第一层调度还可以上报给其他框架。

    2019-10-26
    13
  • 任鹏斌
    老师两层调度中master节点挂掉怎么办?会重新选主还是怎么做的?

    作者回复: master节点的经典部署方式一般是一主两备,如果主故障了,会从备节点中选择一个主,也就是备升主。

    2019-10-21
    6
  • 南国
    怎么理解全局资源最优呢?两层架构中的资源分配算法不是确保了一定程度上公平的分配资源吗?

    作者回复: 全局资源最优,就是在针对用户提交的任务,根据任务所需资源以及集群现有资源实现最优化调度。两层架构中,由于framework只能得到集群中部分资源进行任务调度,无法实现最优调度,可以说是局部最优。

    2020-04-17
    2
  • 亢(知行合一的路上)
    两层调度适用于多租户,像云计算的服务提供商,用户只说需要多少资源,只要满足就可以。 而单用户的话,如果想把资源利用到极致,那集中式更适合,可以统筹管理,而且还可以根据任务的优先级,进行资源的重新分配,这是双层调度做不到的,因为对每个租户都一视同仁。

    作者回复: 👍👍

    2020-03-08
    2
  • 张先生
    最大最小调度在没得到足够资源的情况下是释放已有资源还是等待其他进程释放资源?

    作者回复: 这个可以根据你的业务进行设计,这里只是任务与资源的匹配,当任务没有分配到足够资源时,任务不能执行。可以根据你的任务需求,下一次匹配时重新进行匹配,或者锁住改部分资源等待其他任务释放资源。

    2019-10-22
    1
  • blackpiglet
    第一种调度方式很容易产生碎片,第二种方式应该是追求当前资源利用最大化的算法,道理上讲,应该是不容易产生碎片的,但感觉要实现任务优先级的排序课程中介绍的还不够,但实际应用应该有更复杂的实现吧。
    2019-11-15
    2
  • 金时
    有个疑问,mesos DRF算法是否考虑了 每台机器的 cpu memory 。比如文中所说的两个任务分别需要 2c 8g和6c 2g。 如果每台机器的cpu是2, 内存是8g,有10个机器。那么这时是部署不成6c, 2g的任务的。 这种情况mesos 是如何处理的?
    2020-11-03
    1
  • 懵逼了,需要回头再看一遍,先跳过,否则挫败感太强烈😁
    2020-02-16
    2
    1
  • ost
    老师你好,有个地方不怎么明白 为什么说:第二层调度只能获得部分资源视图? 文章前面不是说过:Mesos Master 的 Scheduler 进程收集所有节点的空闲资源信息,并以Resource Offer 的方式将空闲资源发送给注册的框架;那么既然是收集所有节点的空闲资源,为什么二级调度又只能获得部分资源视图呢。
    2020-02-05
    1
    1
  • i am silly🐭
    有一个问题啊,他分配是根据所有节点的总资源进行分配的,那么如果有一个任务,任何一个节点的资源都不够执行这个任务,但是只要两个节点资源就可以执行这个任务,那么这个任务会分配资源吗?? 按照上面的算法的话是会分配的。
    2019-12-20
    1
收起评论
显示
设置
留言
17
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部