为什么会有两层调度?
单体调度的核心是所有节点的资源以及用户的任务均由中央服务器统一管理和调度,这样中央服务器容易成为单点瓶颈。
为了提升调度效率并支持多种类型的任务,我们可以尝试把资源和任务分开调度,也就是说一层调度器负责资源管理和分配,另一层调度器负责任务与资源的匹配。
两层调度结构对应的是两层调度器,资源的使用情况同时由中央调度器和第二层调度器管理,中央调度器从整体上进行资源的管理和分配,将资源分配到第二层调度器,再由第二层调度器负责将资源与具体的任务匹配。
两层调度的详细结构图如下。
两层调度器中的第一层调度器仍是一个经过简化的中央调度器,通常放在分布式集群管理系统中,而第二层调度则是由各个应用程序框架完成。两层调度器的职责:
常见的常用了两层调度结构的集群管理系统有:
Mesos中的两层调度设计
Mesos本身实现的调度器是第一层调度,负责资源管理,第二层调度交给了应用框架来完成。
以Mesos为基础的分布式资源管理与调度框架包括两部分:
Mesos两层调度的基本原理:
Resource Offer机制是指Mesos Master主动将节点空闲资源以类似发放的方式发给每个框架,如果框架需要则使用,不需要则返回。
通过Resource Offer机制,第一层调度将资源主动告知第二层调度,然后第二层调度进行具体的任务分配,从而实现了任务调度与资源管理的分离,Mesos Master通过资源分配算法决定给各个Framework提供多少资源,而Framework决定了接受哪些资源,以及哪些任务使用这些资源运行。
在调度中,常见的资源分配算法包括:
最大最小公平算法是一种在兼顾公平的前提上,尽可能让更多满意的资源分配算法。这个算法有3个主要原则:
主导资源公平算法在考虑绝对公平的前提下,还考虑了用户对不同类型的需求,以可能得合理分配资源,即主导资源公平算法可以尽可能的满足更多用户。
最大最小公平算法适用于单一类型的资源分配场景,而主导资源公平算法适用于多种类型的混合场景。并且最大最小算法从公平的角度出发。为了每个用户分配不多于与需求量的资源,而主导资源公平算法从任务出发,目的在于充分尽量利用资源使得能够执行的任务越多越好。
转载自: https://www.cnblogs.com/wing011203/p/17121016.html