Mesos 实现了两级调度架构,可以管理多种类型的应用程序。
第一级调度是 Master 的守护进程,管理 Mesos 集群中所有节点上运行的 Slave 守护进程。
集群由物理机/虚拟机组成,用于运行应用程序的任务,比如 Hadoop 和 MPI。
第二级调度由 Framework 组件完成,Framework 包括调度器(Scheduler)和执行器(Executor)进程,其中每个节点上都会运行执行器。
Mesos 能和不同类型的 Framework 通信,每种 Framework 由相应的应用集群管理,图中展示了 Hadoop 和 MPI 两种类型,其它类型的应用程序也有相应的 Framework。
每种 Framework 都需要注册到 Master 上。
Master 协调全部的 Slave,并确定每个节点的可用资源,聚合计算跨节点的所有可用资源,然后向注册到 Master 的 Framework 发出资源邀约。
Framework 可以根据应用程序的需求,选择接受或拒绝来自 Master 的资源邀约。
一旦接受邀约,Master 即协调 Framework 和 Slave,调度节点上任务,并在容器中执行。
多种类型的任务,比如 Hadoop 和 Cassandra,可以在同一个节点上同时运行,这正是使用 Mesos 的好处之一。
Mesos 的设计具有包容性、模块化,核心功能插件化,比如分配策略、隔离机制和 Framework。
特别是 Framework,每接入一种新的 Framework,Master无需为此编码,Slave 模块可以复用。开发者可以专注于他们的应用和 Framework 自身。
了解了 Mesos 架构,还有一个问题不可避免,那就是 Mesos 适合作为数据中心的哪一层的抽象?
我们知道,IaaS 层抽象的是机器,而 PaaS 层考虑更多是部署和管理应用/服务,它并不关心底层的那些基础架构。
Mesos 这一层抽象的是 CPU、内存、网络,其目的是为运行其上的框架提供抽象后的资源池,使得这些框架更加易于构建和运行。
因此 Mesos 应该位于 IaaS 层和 PaaS 层之间。
换言之,你可以在一个 IaaS 上运行 Mesos(比如 OpenStack);可以基于 Mesos 之上构建一个 PaaS 系统(比如 Marathon)。
Mesos 是为构建和运行其它分布式系统(比如 Spark)提供服务的分布式系统。
参考文献:
1. http://www.open-open.com/news/view/139b98b Mesos vs Kubernetes
2. http://dockone.io/article/686 谈谈Apache Mesos和Mesosphere DCOS:历史、架构、发展和应用
3. http://dongxicheng.org/mapreduce-nextgen/mesos_vs_yarn/ 统一资源管理与调度平台(系统)介绍
4. http://dongxicheng.org/apache-mesos/meso-architecture/ Apache Mesos总体架构
5. http://www.infoq.com/cn/articles/analyse-mesos-part-01/ 深入浅出Mesos(一):为软件定义数据中心而生的操作系统
6. http://www.infoq.com/cn/articles/analyse-mesos-part-02/ 深入浅出Mesos(二):Mesos的体系结构和工作流
7. http://www.infoq.com/cn/articles/analyse-mesos-part-03/ 深入浅出Mesos(三):持久化存储和容错
8. http://www.infoq.com/cn/articles/analyse-mesos-part-04/ 深入浅出Mesos(四):Mesos的资源分配
9. http://www.infoq.com/cn/articles/analyse-mesos-part-05/ 深入浅出Mesos(五):成功的开源社区
10. http://www.infoq.com/cn/articles/analyse-mesos-part-06/ 深入浅出Mesos(六):亲身体会Apache Mesos