Apache Mesos(1)-基本概念和介绍
作者:杨冬 欢迎转载,也请保留这段声明。谢谢!
出处:https://andyyoung01.github.io/ 或 http://andyyoung01.16mb.com/
在传统的数据中心中,物理机和虚拟机是典型的计算单元。这些机器上安装了各种配置管理工具来部署应用程序,它们通常组织为集群来提供单个的服务。然而,随着应用负载的增长,这些集群逐渐达到了容量的极限,不得不增加更多的机器来提高集群的处理能力。随着数据中心机器的增多,对于这些机器的管理也就更加复杂和困难,Apache Mesos正是为了解决这个问题而诞生的。
Apache Mesos把数据中心中的各种资源进行抽象,把整个数据中心看作一台大的虚拟计算机,这台计算机中有多个CPU,内存,磁盘等设备。Mesos的集群给应用程序提供它们所需的资源,缺没有传统的虚拟机和操作系统所带来的额外开销。
Mesos的工作流程
我们来看一下:
- Mesos Slave以resource offer(资源邀约)的形式把它自己可用的CPU,内存以及磁盘通告给Mesos Master。
- Mesos Master的allocation module(调度算法)来决定把资源分配到哪个frameworks(程序)。
- 我们假设当前情况下,Spark的调度器没有任何任务来让Mesos集群执行。它拒绝这个resource offer,以便使master可以将资源分配给其它的有任务要执行的frameworks。
- 现在我们假设有一个用户提交了一个Spark的任务到集群上。调度器接受这个任务,等待可以满足这个工作负载的resource offer。
- Spark的调度器从Mesos master接受了一个resource offer,在可用的Mesos slave节点上启动了一个或多个task(任务)。这些任务可以在容器里启动,也可以通过cgroups来实现在同一个Mesos slave节点上各种不同任务的隔离。
在何时以及为什么使用Mesos
Mesos较旧的版本(0.22)主要适用于无状态的服务和应用程序,即这个服务运行一个任务然后将结果报告给其它系统而不需要存储数据到磁盘上。典型的应用如Ruby on Rails,各种数据处理程序Spark slaves以及Jenkins slaves等。
目前Mesos框架已经可以运行分布式数据库(如Cassandra和ElasticSearch)和分布式文件系统(如HDFS),不过必须在有一定的冗余情况下才可行。在实际生产环境下,你需要权衡部署到Mesos集群的服务需要持久化数据的利与弊。
对数据中心的重新思考
传统的数据中心中,程序的部署通常是基于物理机或虚拟机的。程序或者服务静态部署在预先指定好的节点上,固定的某几个节点组成的集群来提供某项服务(如下图所示)。当某个服务的某些节点出现故障时,如果想要这些服务还保持原来的容量,必须快速地将故障的节点恢复,然而这通常是比较困难的。
我们如果使用Mesos,便可解决前面提到的问题。如下图所示,程序或服务可以运行在有可用资源的任意节点上。如果任意一个Mesos节点下线,不会影响的整个集群中的任何服务。
以上是对Apache Mesos的一个基本介绍,下篇文章我们介绍Mesos的分布式架构。