Mesos
Mesos
Mesos is a meta, framework scheduler rather than an application scheduler like YARN.
从各个常用的组件的协调角度,我们可以来看如下这张图:
而从

Slave 1 向Master 汇报其空闲资源:4 个CPU 、4GB 内存。然后,Master 触发分配策略模块,得到的反馈是Framework 1 要请求全部可用资源。Master 向Framework 1 发送资源邀约,描述了Slave 1 上的可用资源。Framework 的调度器(Scheduler) 响应Master ,需要在Slave 上运行两个任务,第一个任务分配<2 CPUs, 1 GB RAM> 资源,第二个任务分配<1 CPUs, 2 GB RAM> 资源。- 最后,
Master 向Slave 下发任务,分配适当的资源给Framework 的任务执行器(Executor), 接下来由执行器启动这两个任务( 如图中虚线框所示) 。此时,还有1 个CPU 和1GB 的RAM 尚未分配,因此分配模块可以将这些资源供给Framework 2 。
Advantage
- 效率:这是最显而易见的好处,也是
Mesos 社区和Mesosphere 经常津津乐道的。
上图来自
-
敏捷:与效率和利用率密切相关,这实际上是我认为最重要的好处。往往,效率解决的是“如何花最少的钱最大化数据中心的资源”,而敏捷解决的是“如何快速用上手头的资源
。 ” 正如我和我的同事 Tyler Britten 经常指出,IT 的存在是帮助企业赚钱和省钱的;那么如何通过技术帮助我们迅速创收,是我们要达到的重要指标。这意味着要确保关键应用程序不能耗尽所需资源,因为我们无法为应用提供足够的基础设施,特别是在数据中心的其他地方都的资源是收费情况下。 -
可扩展性:为可扩展而设计,这是我真心欣赏
Mesos 架构的地方。这一重要属性使数据可以指数级增长、分布式应用可以水平扩展。我们的发展已经远远超出了使用巨大的整体调度器或者限定群集节点数量为64 的时代,足矣承载新形式的应用扩张。Mesos 可扩展设计的关键之处是采用两级调度架构。使用Framework 代理任务的实际调度,Master 可以用非常轻量级的代码实现,更易于扩展集群发展的规模。因为Master 不必知道所支持的每种类型的应用程序背后复杂的调度逻辑。此外,由于Master 不必为每个任务做调度,因此不会成为容量的性能瓶颈,而这在为每个任务或者虚拟机做调度的整体调度器中经常发生。 -
模块化:对我来说,预测任何开源技术的健康发展,很大程度上取决于围绕该项目的生态系统。我认为
Mesos 项目前景很好,因为其设计具有包容性,可以将功能插件化,比如分配策略、隔离机制和Framework 。将容器技术,比如Docker 和Rocket 插件化的好处是显而易见。但是我想在此强调的是围绕Framework 建设的生态系统。将任务调度委托给Framework 应用程序,以及采用插件架构,通过Mesos 这样的设计,社区创造了能够让Mesos 问鼎数据中心资源管理的生态系统。因为每接入一种新的Framework ,Master 无需为此编码,Slave 模块可以复用,使得在Mesos 所支持的宽泛领域中,业务迅速增长。相反,开发者可以专注于他们的应用和Framework 的选择。当前而且还在不断地增长着的Mesos Framework 列表参见 此处 以及下图:
资源分配
为了实现在同一组
我们来更深入地研究一下资源邀约和分配策略,因为这对
分配策略有助于