暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分布式调度架构之两层调度

157


在分布式计算环境中,资源调度是一个核心问题。单体调度虽然简单,但在处理大规模集群时容易出现瓶颈。两层调度作为一种更灵活的调度架构,被广泛应用于各种分布式系统。本文档旨在深入探讨分布式领域中的两层调度,重点介绍其概念、优势、典型实现和相关算法。

1. 单体调度的局限性

单体调度使用中央服务器统一管理和调度资源和任务,当集群规模增大时,中央服务器容易成为性能瓶颈和单点故障点。

2. 什么是两层调度?

两层调度是一种将资源管理和任务调度分离的调度架构。它包含两层调度器:

  • 第一层调度器: 负责资源管理和分配,例如将集群中的节点资源分配给不同的应用程序或框架。

  • 第二层调度器: 负责任务与资源的匹配,例如将应用程序的任务调度到已分配的资源上执行。

3. 两层调度的优势

  • 资源隔离: 第一层调度器负责资源分配,可以实现不同应用程序或框架之间的资源隔离。

  • 灵活性: 第二层调度器由应用程序或框架自行实现,可以根据其特点选择合适的调度算法。

  • 可扩展性: 两层调度架构可以更好地支持大规模集群。

4. 典型实现:Mesos 和 Hadoop YARN

Mesos 和 Hadoop YARN 是典型的两层调度器。


4.1 Mesos 的两层调度设计

  • 资源管理集群和框架: Mesos 将集群资源抽象成统一的资源池,并允许不同的框架(例如 Hadoop、Spark)运行在 Mesos 之上。

  • Mesos Master 上的调度器: 负责管理并分配集群中的所有资源。

  • 框架: 框架负责任务的管理与调度。每个框架都可以在 Mesos 上注册一个调度器,接收 Mesos Master 分配的资源,并将其分配给自己的任务。

  • 资源分配流程:

    1. Mesos Master 向框架提供可用的资源。

    2. 框架在其自身的调度器中选择接受哪些资源,并告知 Mesos Master 在这些资源上启动哪些任务。

5. 两层调度算法

第一层调度器通常需要使用一定的算法来分配资源。以下是两种常见的两层调度算法:

5.1 最大最小公平算法

  • 资源分配原则: 按照用户对资源需求量递增的顺序进行空闲资源分配。

  • 公平性保证:

    • 不存在用户得到的资源超过其需求的情况。

    • 对于分配的资源不满足需求的用户,其获得的资源是相等的。

  • 优点: 能够保证所有用户获得其应得的最小份额的资源。

  • 缺点: 没有考虑用户对不同资源类型(例如 CPU、内存)的需求。

5.2 主导资源公平算法

  • 考虑资源类型: 考虑用户对不同资源类型的需求。

  • 主导资源: 用户消耗量最大的那类资源被定义为主导资源。

  • 公平性目标: 平衡所有用户的主导资源占用率,尽可能最大化所有用户中最小的主导资源占用率。

  • 优点: 能够更好地平衡不同类型资源的使用,提高资源利用率。

6. 两层调度的资源隔离

两层调度通常使用容器技术来实现资源隔离。

  • 容器: 容器的实质是进程,运行于属于自己的独立的命名空间。

  • 资源隔离: 通过限制容器的 CPU、内存、存储等资源使用量,实现不同应用之间的资源隔离。

7. 总结

两层调度提供多租户、多框架的支持,Mesos 的两层调度设计非常巧妙,为构建灵活、可扩展的分布式系统提供了强大的支持。


文章转载自戏说数据那点事,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论