`

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

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的概念解析和工作原理。敬请期待。
分享到:
评论

相关推荐

    藏经阁-Mesos,数据中心操作系统的核心.pdf

    Mesos 的编程抽象是基于 POSIX API 的,但是它也提供了自己的 API,即 Mesos API,包括 Resource 和 Offer 等概念。Mesos 中的安全与隔离是通过容器化实现的,它可以提供虚拟内存、用户和其他安全机制。 在 Mesos ...

    kubernetes-mesos:Apache Mesos 的 Kubernetes 框架

    请参阅以查看核心概念、系统架构和。 该项目目前基于并已自定义发布分发:已添加、删除和/或更改组件。教程维护了一个运行的教程,该教程会定期更新以配合该项目的发布。二进制文件对于 Kubernetes-Mesos 框架的仅...

    elasticsearch-mesos:Mesos 上的弹性搜索

    这是目前在 Mesos 上原生运行 Elasticsearch 的概念证明。 不要在生产中使用它! 我们很乐意得到社区的帮助,以使其达到生产级别。 先决条件 运行 0.15.0+ 版本的 Apache Mesos 集群 Java Maven 获取 教程 从 ...

    ecs-mesos-scheduler-driver:Amazon ECS调度程序驱动程序

    Amazon ECS Scheduler驱动程序Amazon EC2容器服务(Amazon ECS)调度程序驱动程序是我们如何开始将Apache Mesos与ECS集成的初步概念证明。 这一概念证明证明了Mesos调度程序(框架)如何在ECS上调度工作负载。 它...

    Singularity:用于运行 Mesos 任务的调度程序(HTTP API 和 webapp)——长时间运行的进程、一次性任务和计划作业。 #hubspot-开源

    有关 Singularity 和 Mesos 背后概念的更详尽解释,请单击。 特征 与丰富负载均衡器集成 向服务所有者发送可配置的电子邮件警报 试试看! 如果您想尝试一下 Singularity,您可以安装docker和docker-compose来...

    走进Docker 62课 基本概念和架构 技术原理 容器 镜像与仓库 部署应用

    Docker 基本概念和架构 Docker 容器 Docker 容器的数据管理 Docker 容器的网络连接 Docker 技术原理 Docker 镜像与仓库(一) Docker客户端和守护进程 Docker容器的跨主机访问 Docker源码分析(一)Docker介绍 ...

    dispatch:在 mesos 集群上执行脚本

    概念证明这是目前的概念证明,不应在生产环境中使用。运行! docker run -e MASTER= &lt; MESOS&gt; -e PORT=7070 --net=host thomasr/dispatch

    mesos-playground:流浪盒子玩金币

    中观游乐场 这个 repo 提供了一个 vagrant 配置 一位金币大师 两个金币奴隶 一个在 master 上带有 puppetca (tosmi/puppetca) 的 docker...这是通过 apache mesos 和 marathon 对可扩展的 puppetmasters 进行概念验证。

    nix-aurora:Nis on Mesos上的Aurora

    此仓库是将与表达式语言,程序包管理器和构建系统集成的概念证明。 有什么想法 这个想法是使用Nix表达式定义Aurora作业配置。 每个Nix表达式都定义一个单独的Aurora作业(使用典型的Task / Process / Constraint / ...

    解析阿里云分布式调度系统伏羲

    云计算并不是无中生有的概念,它将普通的单台PC计算能力通过分布式调度软件连接起来。其最核心的问题是如何把一百台、一千台、一万台机器高效地组织起来,灵活进行任务调度和管理,从而可以像使用台式机一样使用...

    spark原理与调优详解

    Standalone 模式是 Spark 的默认模式,YARN 模式则是将 Spark 部署在 Hadoop 集群中,Mesos 模式则是将 Spark 部署在 Mesos 集群中。 Spark 开发 Spark 的开发包括 Spark-shell 和提交模式两种。Spark-shell 是一...

    spark rdd 实战 ,基本语法

    * Spark on Mesos 模式:Spark 在 Mesos 上运行。 Spark 的Driver 程序 在 Spark 中,Driver 程序负责启动多个 Worker,Worker 从文件系统加载数据并将其转换为 RDD。 RDD 的概念 RDD(Resilient Distributed ...

    教学大纲-《云计算原理与实践》.doc

    云操作系统章节讲解计算机软件与操作系统、UNIX 类操作系统的发展、云操作系统概述、云计算编程模型与环境等内容,并实践 Mesos。云端软件章节讲解从软件到云件、云件系统的架构设计与运行原理、云件的开发模式与...

    Spark Standalone架构设计.docx

    RDD(Resilient Distributed Datasets)是 Spark 的核心概念之一,弹性分布式数据集,它是对分布式数据集的一种内存抽象,通过受限的共享内存方式来提供容错性,同时这种内存模型使得计算比传统的数据流模型要高效。...

    docker practice

    docker practice Docker 是个划时代的开源项目,它彻底释放了计算...后续章节则分别介绍包括 Etcd、CoreOS、Kubernetes、Mesos、容器云等相关热门开源项目。最后,还展示了使用容器技术的典型的应用场景和实践案例。

    spark-practice

    mesos://HOST:PORT 连接到指定的 Mesos 集群,需要指定端口。yarn-client客户端模式 连接到 YARN 集群。需要配置 HADOOP_CONF_DIR。yarn-cluster集群模式 连接到 YARN 集群。需要配置 HADOOP_CONF_DIR。SparkSession...

    docker从入门到实践(2016年最新版)

    02 基本概念 03 安装 04 镜像 05 容器 06 仓库 07 数据管理 08 使用网络 09 高级网络配置 10 实战案例 11 安全 12 Dockerfile 13 底层实现 14 Docker Compose项目 15 Docker Machine项目 16 Docker Swarm项目 17 ...

    Spark-Core学习知识笔记整理

    2.5Spark-on-Mesos模式配置 13 2.6Hive-on-Spark配置 13 第三章 Spark计算模型 15 1 RDD编程 15 1.1弹性分布式数据集RDD 15 1.2构建RDD对象 15 2RDD操作 15 2.1将函数传递给Spark 16 2.2了解闭包 16 2.3Pair RDD模型...

    藏经阁-SCALABLE DATA SCIENCE WITH SPARKR.pdf

    本资源主要介绍了 SparkR 的概念和应用,SparkR 是一个基于 Apache Spark 的 R 语言接口,允许 R 语言开发者使用 Spark 的功能来进行大规模数据科学计算。本资源的作者是 Felix Cheung,微软公司的principal ...

    大数据处理期末考试题库.doc

    Stage 和 Task 是 Spark 中的两个概念,Stage 是一个高级别的逻辑单位,Task 是一个低级别的执行单位,Task 的数量由 Partition 决定。 在 Spark 中,窄依赖指的是一个 Task 的输入数据来自于一个 Partition,宽...

Global site tag (gtag.js) - Google Analytics