Mesos Architecture
上图显示了 Mesos 的主要组成部分。 Mesos 由一个 master daemon 来管理 slave daemon 在每个集群节点上的运行, mesos applications ( 也称为 frameworks )在这些 slaves 上运行 tasks。
Mesos master&slave首先,Mesos是一个分布式的架构,它分Mesos master和Mesos slave,slave和master分别有不同的职责。从Mesos的源代码可以看出Mesos实现得比较优雅——它是一个C++代码。代码中有大量的关键词叫process,它不是传统意义上的进程,而是一种抽象的libprocess,libprocess是它最核心的库。如果大家以前使用过Erlang的语言就知道libprocess实际是对Erlang的IO和通讯模型的一个抽象。
libprocess,在Erlang里面也叫进程,实际上是一个虚拟进程,在运行Erlang的VM上。它最优的特点是消息在不同的process之间传递,它抽象了process,消息传递其实是一个事件的库。向process里发一个消息,这个消息不是直接打到process,而是中间有一个buffer的过程。
这样做的优点是特别适合分布式的系统,以前最常用的做法是监听网络端口,有包来了,有一个模块专门负责解这个包,解开一个协议后把这个协议发到后面一个处理进程,这个处理的进程可能是IO操作,可能去做其它事情,然后里面有很多IO上的Block,最后构造出一个response,通过一个socket传给客户端。这是最常用的一个写网络程序的办法,但是这里有一个大的IO上Block的地方——后面处理的逻辑依赖于解包的逻辑。如果处理逻辑很快,但解包逻辑很慢,后面会拖慢,都在等解包。
后来人们想到一种IO处理的方式,让任何一个东西都是分离的,比如从某一个端口收到一个消息,有一个单独的进程,一个线程或者其它的东西去处理这个唯一的请求。这个线程很重,后来大家又发明了一些其它的东西,比如golang里面去搞一个channel,Erlang里面去搞一个process。libprocess实际上做了IO方面的事情, Mesos大量使用这个模型。
ZookeeperMesos底层实际上依赖于Zookeeper,为了保证分布式存储最终一致性。在Mesos运行过程中产生了一些数据,最终都会落在Zookeeper。因为Mesos是多个master,为了达到HA的需求,只要一个master活的,那么整个服务就能得到保证。
protobufMesos内部在通信里面选择了protobuf协议。好处是比较流行,各个语言的库都比较多,结构化的语义也比较强,所以Mesos内部选择了protobuf。
Master 使用 Resource Offers 实现跨应用细粒度资源共享,如 cpu、内存、磁盘、网络等。 master 根据指定的策略来决定分配多少资源给 framework ,如公平共享策略,或优先级策略。 为了支持更多样性的策略,master 采用模块化结构,这样就可以方便的通过插件形式来添加新的分配模块。
在 Mesos 上运行的 framework 由两部分组成:
一个是 scheduler ,通过注册到 master 来获取集群资源。
另一个是在 slave 节点上运行的 executor 进程,它可以执行 framework 的 task 。 Master 决定为每个 framework 提供多少资源, framework 的 scheduler 来选择其中提供的资源。当 framework 同意了提供的资源,它通过 master 将 task发送到提供资源的slaves 上运行。
资源供给的一个例子下图描述了一个 Framework 如何通过调度来运行一个 Task
事件流程:
Slave1 向 Master 报告,有4个CPU和4 GB内存可用
Master 发送一个 Resource Offer 给 Framework1 来描述 Slave1 有多少可用资源
FrameWork1 中的 FW Scheduler会答复 Master,我有两个 Task 需要运行在 Slave1,一个 Task 需要<2个CPU,1 GB内存="">,另外一个Task需要<1个CPU,2 GB内存="">
最后,Master 发送这些 Tasks 给 Slave1。然后,Slave1还有1个CPU和1 GB内存没有使用,所以分配模块可以把这些资源提供给 Framework2
当 Tasks 完成和有新的空闲资源时,Resource Offer 会不断重复这一个过程。、
当 Mesos 提供的瘦接口允许其来扩展和允许 frameworks 相对独立的参与进来,一个问题将会出现: 一个 framwork 的限制如何被满足在不被 Mesos 对这些限制所知晓的情况下?
例如, 一个 framework 如何得到数据本地化在不被 Mesos所知晓哪个节点存储着被该 framwork 所需要的数据?Mesos 通过简单的寄予 frameworks 能够拒绝 offers 的能力来回答了这个问题。 一个 framework 将拒绝 不满足其限制要求的 offers 并接受满足其限制要求的 offers.
特殊情况下,我们找到一个简单的策略 delay scheduling, 在该 frameworks 等待 一个限制时间来获取存储输入数据的节点, 并生成接近的优化过得数据点。
本篇主要分享了mesos的组成部分和事件流程。下周会详细介绍Mesos的概念解析和工作原理。敬请期待。
分享到:
相关推荐
根据提供的文件信息,本文将介绍Apache Mesos的核心概念和知识点。Mesos是一种分布式系统内核,由加州大学伯克利分校的AMP实验室开发,之后成为Apache开源项目。 首先,Mesos中文手册的目的是提供一个知识共享平台...
这一章节主要介绍了Mesos的基本概念和发展背景,包括Mesos的设计理念、解决的问题以及如何通过Mesos来管理大规模的数据中心资源。作者还阐述了Mesos如何与现有的数据中心基础设施集成,以及它在云计算环境中的作用。...
首先,我们要理解Apache Mesos的基本概念。Mesos分为三个主要组件:Master、Agent和框架。Master节点负责整个集群的资源分配和调度,Agent节点运行在每个物理或虚拟机上,管理本节点的资源,而框架则是运行在Mesos上...
这一系列文章可能涵盖了Mesos的基本概念、架构、核心功能以及如何在实际场景中部署和管理Mesos集群。 【描述】:虽然描述部分为空,但根据“博文链接:https://jxauwxj.iteye.com/blog/2264433”,我们可以推断这...
1. Mesos的基本概念和功能。Apache Mesos的设计目标是为分布式系统提供一个统一的资源管理平台,它能够在整个数据中心层面管理计算资源,比如CPU、内存和存储空间。这些资源被抽象为“资源池”,然后按需分配给运行...
Mesos 的编程抽象是基于 POSIX API 的,但是它也提供了自己的 API,即 Mesos API,包括 Resource 和 Offer 等概念。Mesos 中的安全与隔离是通过容器化实现的,它可以提供虚拟内存、用户和其他安全机制。 在 Mesos ...
《Apache Mesos Cookbook》旨在通过一系列实用且强大的食谱帮助读者快速入门并深入掌握Apache Mesos的核心概念和技术细节。本书分为以下几个部分: 1. **基础知识**:介绍Mesos的基本概念、架构以及安装配置方法。 ...
首先,我们需要理解Airflow的核心概念。Airflow中的任务(Task)是可重试的、有依赖关系的代码单元,它们被组织成 dag(Directed Acyclic Graph,有向无环图),形成工作流程。DAG定义了任务间的执行顺序,使得...
Mesos源码的解析将涉及以下几个核心概念: 1. **Mesos架构**:Mesos由Master、Slave(在最新版本中改称为Agent)和Executor三部分组成。Master负责全局资源调度,Slave在每个节点上运行,汇报资源状态,Executor则...
Mesos中的关键概念包括: 1. Mesos Master:作为中心协调者,管理所有Framework和Slave,分配资源。 2. Mesos Slave:在每个节点上运行,管理本节点的Task,为Executor提供资源。 3. Framework:可以是各种计算框架...
请参阅以查看核心概念、系统架构和。 该项目目前基于并已自定义发布分发:已添加、删除和/或更改组件。教程维护了一个运行的教程,该教程会定期更新以配合该项目的发布。二进制文件对于 Kubernetes-Mesos 框架的仅...
首先,需要明确Docker和Mesos的概念。Docker是一个开源的应用容器引擎,可以基于Linux内核功能,如cgroups和namespace等,封装软件到一个可移植的容器中,使得应用程序能在任何Linux机器上运行而不依赖于任何环境...
- Mesos架构:包括Mesos Master、Agent(节点)、Executor和框架的概念,以及它们之间的交互方式。 - LXC容器的原理和管理:如何创建、配置和控制LXC容器,以及容器内的资源限制和隔离。 - ProtocolBuffer的使用:...
本书不仅涵盖了微服务的基本概念和技术细节,还提供了实际案例研究,帮助读者深入了解如何使用Spring Boot、Docker和Mesos来构建稳定、可扩展的微服务架构。通过学习这些工具和技术,开发者可以更好地应对复杂的应用...
为了使用Perl-Mesos,开发者需要了解Perl编程语言,掌握Mesos的基本概念和工作原理。同时,参考`perl-mesos-master`中的代码示例和文档,可以加速理解和应用这个模块。社区支持和开源项目也是获取帮助和贡献代码的...
首先,让我们深入了解Mesos的核心概念。Mesos将集群中的硬件资源抽象化为一个统一的资源池,然后将这些资源分配给运行在其上的任务或框架。框架是运行在Mesos上的应用程序,它们可以是数据处理系统(如Hadoop或Spark...
这是目前在 Mesos 上原生运行 Elasticsearch 的概念证明。 不要在生产中使用它! 我们很乐意得到社区的帮助,以使其达到生产级别。 先决条件 运行 0.15.0+ 版本的 Apache Mesos 集群 Java Maven 获取 教程 从 ...
本文将重点围绕Mesos Analytics这一主题,结合JavaScript技术,详细阐述其核心概念、工作原理以及实际应用。 首先,Apache Mesos是一种开源的分布式系统内核,它为大数据应用提供了高效的资源调度和管理。Mesos的...