mesos基础

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大量使用这个模型。

Zookeeper
Mesos底层实际上依赖于Zookeeper,为了保证分布式存储最终一致性。在Mesos运行过程中产生了一些数据,最终都会落在Zookeeper。因为Mesos是多个master,为了达到HA的需求,只要一个master活的,那么整个服务就能得到保证。

protobuf
Mesos内部在通信里面选择了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的概念解析和工作原理。
敬请期待。

时间: 2024-08-08 12:17:10

mesos基础的相关文章

java web 开发三剑客 -------电子书

Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知Internet的目的是让各个net交互.所以,Internet实质上是将世界上各个国家.各个网络运营商的多个网络相互连接构成的一个全球范围内的统一网,使各个网络之间能够相互到达.各个国家和运营商构建网络采用的底层技术和实现可能各不相同,但只要采用统一的上层协议(TCP/IP)就可以通过Internet

mesos 集群基础功能测试(8)

############################################################### mesos 集群功能测试 ############################################################### 1:首先准备一个json文件(hello.json) { "id": "hello", "cmd": "echo hello; sleep 10",

Apache的Mesos和Google的Kubernetes 有什么区别?

Apache的Mesos和Google的Kubernetes 有什么区别?本文来自StackOverFlow上的一个问题,主要讨论Mesos和Kubernetes的区别,相信我们很多人也有同意的疑问. Kubernetes的开发者Craig回答了这个问题,同时masi也做了概述,不一定对,供读者参考.Kubernetes主要针对容器集群,而 Mesos适用于任何的框架和应用,所以Kubernetes可以运行于Mesos上. Kubernetes是一个开源项目,它把谷歌的集群管理工具引入到虚拟机和

云计算基础知识

1      云计算分层 1.1   IaaS(Infrastructureass Service) Iaas表示基础设施即服务,是云服务里最重要的也是最基础的一块,经常提到的云计算,云存储等等,都属于这个领域. 1.2   PaaS(Platform asa Service) PaaS表示平台即服务,它可以提供软件开发(包括APP)所需的基础功能模块.例如提供一些开发的环境及工具. 1.3   SaaS(Software asaService) SaaS表示软件即服务,主要给用户提供一些云应用

docker基础平台安装1

Docker基础平台安装 1. 前言 1.1.  文档目标 假定您对docker及相关生态有一定的了解,参照此文档,可以完成以下工作 2  完成docker基础组件的安装 2  完成docker网络组件的安装配置 2  完成docker平台管理组件的安装 1.2.  平台目标 2  Docker应用部署平台 2  各主机资源统一调度 2  应用实例快速伸缩 2  方便的服务发现机制 2  内部DNS访问容器 2  跨主机容器网络 2  容器内应用健康检查 1.3.  环境要求 操作系统:cent

DCOS实践分享(4):如何基于DC/OS整合SMACK(Spark, Mesos, Akka, Cassandra, Kafka)

这篇文章入选CSDN极客头条 http://geek.csdn.net/news/detail/71572 当前,要保证业务的市场竞争力,仅靠设计一个可用并且好看的产品,已经完全不能满足要求.全球消费者都希望产品能够足够的智能化,通过大数据分析来改善他们的用户体验.简言之,物联网和大数据终将成为改变生活的技术驱动力. 近几年涌现了大量的技术架构与设计模式,开发者和科学家可以利用它们为大数据和物联网开发实时的数据分析工作流应用.其中批处理架构,流式处理架构,lambda架构,Kappa架构,都是其

大数据架构师基础:hadoop家族,Cloudera产品系列等各种技术

大数据我们都知道hadoop,可是还会各种各样的技术进入我们的视野:Spark,Storm,impala,让我们都反映不过来.为了能够更好的架构大数据项目,这里整理一下,供技术人员,项目经理,架构师选择合适的技术,了解大数据各种技术之间的关系,选择合适的语言. 我们可以带着下面问题来阅读本文章: 1.hadoop都包含什么技术 2.Cloudera公司与hadoop的关系是什么,都有什么产品,产品有什么特性 3. Spark与hadoop的关联是什么? 4. Storm与hadoop的关联是什么

Kubernetes vs Mesos

当前国内最火的容器集群管理非Kubernetes和Mesos莫属,那么这两种解决方案各自的应用场景和解决的痛点分别是什么呢,这篇内容就来带大家简单的聊一聊他们各自特性,内容来自于网络上各位大咖的总结,就当是一篇随笔记录吧. Kubernetes简介 Kubernetes是一个开源项目,它把谷歌的集群管理工具引入到虚拟机和裸机场景中.它可以完美运行在现代的操作系统环境(比如CoreOS和Red Hat Atomic),并提供可以被你管控的轻量级的计算节点.Kubernetes使用Golang开发,

Mesos超配:让集群利用率可以达到100%

引言:集群利用率100%意味着什么?从某种意义上来说,Mesos集群上没有任何空闲资源时,就可以说达到了100%的利用率. 但是,即使某个框架为某个任务(比如一个web服务器)预留了资源,该任务可能并不会完全使用所有这些资源.实际上,在大多数集群上,实际使用率仅仅有10%-30%.为了解决这个问题,Mesos推出了超配特性.该特性允许Mesos集群自动使用预留但是未使用的资源. 本文选自<用Mesos框架构建分布式应用>. Mesos超配特性是基于Google的Heracles系统,是解决低实