`
m635674608
  • 浏览: 5043949 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

谈谈Apache Mesos和Mesosphere DCOS:历史、架构、发展和应用

 
阅读更多

Mesos 是一个很年轻的开源项目,它的理念是怎样的? 它的整体架构以及服务对象又是什么? 基于此的 Mesosphere DCOS 又是如何定位的? 本文作者就这些话题展开了探讨。

Mesos 发展史

Mesos 是一个早在2009年由 Benjamin Hindman、Andy Konwinski、Matei Zaharia、Ali Ghodsi、Anthony D. Joseph、Randy Katz、Scott Shenker和Ion Stoica几人联合发起的伯克利大学研究项目。Benjamin 随后将其引入 Twitter,而如今它已经完美的运行在他们的数据中心上, Benjamin 本人也在不久之后成为了 Mesosphere 的首席架构师,正是它构建了 Mesosphere 数据中心操作系统(DCOS)。

Mesos 的设计宗旨在于尝试和提高集群的利用效率和性能,他们认为对于数据中心资源的单纯静态划分和使用的这样一个方式是值得重新考量的,举个例子来说:

我们假设你的数据中心里拥有9个主机:
 谈谈Apache Mesos和Mesosphere DCOS:历史、架构、发展和应用
如果把它静态的划分开来,并且指定每三个主机承载一个应用,这样一来总共是3个应用(这里是Hadoop、Spark 和 Ruby on Rails)。
 谈谈Apache Mesos和Mesosphere DCOS:历史、架构、发展和应用
显而易见的一个问题是这些主机的资源利用率并不会很高;
 谈谈Apache Mesos和Mesosphere DCOS:历史、架构、发展和应用
因此如果你想使用全部的资源,即这里例子中的全部9台主机,那么就需要将其抽象成一个共享资源池,而你可以按需计划配置,这样的话,利用率自然可以得到相应的提升;
 谈谈Apache Mesos和Mesosphere DCOS:历史、架构、发展和应用

Mesos团队的第二个观点在于他们觉得需要为分布式系统量身定制一套新的系统,换句话说,他们觉得MapReduce并不是适用于所有的场景 (这也导致了Spark的诞生,而它又是另外一个故事了),而我们需要一个新的更简单和更具有通用性的专为分布式系统提供服务的这样一个框架。

Mesos 框架(分布式系统)到底是什么?

一般来说,一个分布式系统你需要有一个Coordinator(调度器)和 多个Worker(执行任务)。调度器以同步(分布式)的方式运行进程/任务,处理程序错误(容错),并且负责优化性能(即弹性伸缩)。换句话说,它负责 协调在数据中心去实际执行你想要运行的代码(不需要是一个完整的程序,它也可以是某些种类的运算)。正如之前所提到的那样,Mesos将其称之为联合调 度。
 谈谈Apache Mesos和Mesosphere DCOS:历史、架构、发展和应用
或者也可以这么说,Mesos是一个带有调度器的分布式系统。
 谈谈Apache Mesos和Mesosphere DCOS:历史、架构、发展和应用
那么Mesos的真正定位是什么呢? 当你尝试去执行它的任务时你可以理解为它实际上就是机器和调度器之间的一层抽象。

因此在Mesos里,调度器是和Mesos层(通过API等)通信,而不是直接跟物理机器打交道。Mesos这里通过这样的方式尝试解决的即是资 源的静态划分问题,这意味着你不再需要针对每个特定的运行时分配一个对应的调度器去决定实际去执行它的workers,而取而代之的是,你有一个调度器去 和Mesos通信,而它会反过来依据整个资源池的剩余资源做调度。
 谈谈Apache Mesos和Mesosphere DCOS:历史、架构、发展和应用
这样做带来的最显而易见的好处就是你可以在一批机器上运行多个不同的分布式系统并且更有效的(不再是静态划分)动态划分和共享这些资源。
 谈谈Apache Mesos和Mesosphere DCOS:历史、架构、发展和应用
其次,之所以这样抽象设计的另外一个重要原因在于它能够提供一个通用功能集(故障检测、分布式任务、任务启动、任务监控、结束任务、清理任务等),这样一来就无需每个分布式系统都各自重复的去实现这样一套逻辑。

Mesos 适合作为数据中心的哪一层的抽象?

Mesos 这一层抽象实现的目的即是想要尝试通过使用并更好的调度资源使得运行在其之上的这些框架变得更加易于构建和运行。
 谈谈Apache Mesos和Mesosphere DCOS:历史、架构、发展和应用
IaaS的抽象的是机器,例如你给它指定一个数字,它便会生成一堆的机器而这也可以看作是Mesos概念模型更底层化的一个抽象。PaaS则考虑的更多是 部署和管理应用/服务,它并不关心底层的那些基础架构,而你可以把它看作是Mesos概念模型的一个更高层面的抽象。在交互方面,PaaS可能是和开发者 直接交互,而Mesos则是以API的形式和软件程序交互。

换句话说,你可以基于Mesos之上构建一个Paas系统(例如像Marathon - 它好像任何地方都比一个真正的Paas系统更像PaaS),同时你可以在一个IaaS上运行Mesos(例如OpenStack)。

如果你将你的Mesos运行在一个组合系统(例如就像Openstack + 物理硬件 + 虚拟机)之上,那么你可以很直观的再次体会到动态划分资源的好处,那便是你能够跨越这些底层组件而直接的去管理和计划你的工作负载,某种意义上来说,你可 以认为Mesos类似于是一个数据中心的内核,即它负责将物理机器抽象成资源,从而使得你能够忽略底层组件的存在,通过消费Mesos的抽象资源来构建分 布式系统。

因此我们可以说,Apache Mesos是为构建和运行其它分布式系统(例如像Spark)提供服务的分布式系统。

Mesos架构内幕

在 Mesos 里,一个框架程序(或者说分布式系统)发起的一次请求会在被接收到的那个时刻由调度器承接和分配。这跟传统分布式系统一般人为发起请求的方式不太一样(再 强调一下,Mesos将会让框架程序发起请求,而不是人工操作),传统的方式即需要在人为发起请求时设定好需要分配的特定资源,然后再去真正请求和获取这 些资源,这类情况中最典型的莫过于需求场景的变换(设想在Map/Reduce的场景下,比如在Map和Reduce阶段切换之际产生的一个需求资源的变 化)
 谈谈Apache Mesos和Mesosphere DCOS:历史、架构、发展和应用
与传统分布式系统不一样的是,Mesos 将会立马为其分配所能分配的最大资源,而不是傻傻的在那等到满足该请求的资源完成/完全到位(在这里它想要实现的便是在绝大多数情况下十分奏效的无阻塞式资源分配策略,即你无须立马消费预期请求的全量资源的这样的情景)。

当然,现在框架类应用(分布式系统)也可以使用Mesos提供的资源完成他们自己的调度,这便是所谓的 “二次资源调度”。
 谈谈Apache Mesos和Mesosphere DCOS:历史、架构、发展和应用
最终达到的效果即是你下发的一个任务可以在整个数据中心的任意一个地方提交并且运行。

构建这样的“二次资源调度”系统的原因在于它可以在同一时间内支持多个分布式系统。同样以上面的例子来解释,Mesos为Spark提供和分配所 需的资源。而这里,Spark则负责决策和分配这些可用资源去运行实际任务(即因为可用的资源得以满足需求,所以我才能够实际去运行这些map任务)。
 谈谈Apache Mesos和Mesosphere DCOS:历史、架构、发展和应用
所以一旦一个任务被框架应用提交到Mesos,那么这些任务就必须被实际执行。Mesos master 负责指派任务给每个slave,而每个slave通过上面跑着的agent来管理和运行这些任务。(这即是说如果这个任务是对应的一个命令,那么它会去执 行它,如果它需要一些特定的资源来完成这个任务,比如像jar包,那么它会先获取所需的资源,然后在一个沙盒里执行它,最后才发起这个任务)

或者说你也可以这样,框架应用可以通过一个执行器(框架应用需要一个中间层,这个中间层可以用来多线程执行任务)来灵活的决定它想要执行的任务。
 谈谈Apache Mesos和Mesosphere DCOS:历史、架构、发展和应用
为了保证资源的相对隔离性,Mesos 对 Kernel的cgroups和namespaces 提供了内置的原生支持,当然你也可以将一个Docker容器当做一个任务去运行。这样一来,它便给你提供了一个多租户的(框架)资源池的访问机制(跨主机 和主机内部的进程间通信)。

你可以预请求你所需的资源,当然这样你也就回到了资源固定划分的时代。如果你有一些有状态的应用,那么你需要预定一些资源(这类任务通常需要在同一台主机上运行)并且需要一些持久化的存储卷(数据需要能够支持故障迁移和恢复),而这类需求Mesos同样能够支持。

Mesosphere DCOS

DCOS(数据中心操作系统)即是Mesos的“核心”与其周边的服务及功能组件所组成的一个生态系 统。例如像mesos-dns这样的插件模块,类似一个CLI,一个GUI又或者是提供你想运行的所有的包的仓库等工具,以及像Marathon(又名分 布式的init)、Chronos(又名分布式的cron)这样的框架等等。

顾名思义,它即是意味着一个跨越在数据中心或者云环境所有主机之上的操作系统。DCOS 可以运行在任意的现代linux环境,公有或私有云,虚拟机甚至是裸机环境。(当前所支持的平台有:亚马逊AWS、谷歌GCE、微软Azure、 OpenStack、Vmware、RedHat、CentOS、CoreOS以及ubuntu)。迄今为止,DCOS 在其 公有仓库上已经提供了多达40余种服务组件(Hadoop、Spark、Cassandra、Jenkins、Kafka、MemSQL等等)。

另附 Mesosphere 集群操作系统(DCOS)入门视频。

原文链接:Introduction to Apache Mesos and Mesosphere DCOS (翻译:吴佳兴)

来自:http://dockone.io/article/686

 

http://www.07net01.com/2015/09/934439.html

分享到:
评论

相关推荐

    openstack-dcos-setup:OpenStack集群上的Mesosphere DCOS设置

    该存储库包含Terraform模块的代码和说明,该代码和说明允许将Mesosphere DCOS集群自动部署到基于OpenStack的环境,包括公开OpenStack兼容API的公共云。 先决条件 基于OpenStack的环境的凭据 具有受支持的DCOS支持的...

    肖德时-基于Apache Mesos的企业级容器云实践

    Apache Mesos是一个开源的集群管理器,它为分布式应用提供了一个高效的平台,可以优化资源分配,简化大规模计算集群的管理工作。Apache Mesos最初是由加州大学伯克利分校的AMPLab项目开发,并被用于生产环境中,后来...

    Apache Mesos Cookbook-Packt Publishing(2017)【E文】

    这本书适合希望深入了解Apache Mesos及其应用的IT专业人士,特别是那些在大数据处理、云计算、容器技术等领域工作的开发者、架构师和运维工程师。 #### 八、总结 《Apache Mesos Cookbook》是一本全面介绍Apache ...

    dcos11.zip源码

    DCOS(Distributed Operating System,分布式操作系统)是Mesosphere公司推出的一款开源平台,它构建于Apache Mesos之上,用于管理和运行分布式应用。DCOS 1.11版本提供了丰富的功能和改进,旨在为企业级数据中心...

    dcos:DCOS-数据中心操作系统

    DC / OS-数据中心操作系统在生产中运行微服务,大数据和容器的最简单方法。什么是DC / OS? 与传统操作系统一样,DC / OS是管理计算机硬件和软件资源并为计算机程序提供通用服务的系统软件。 与传统的操作系统不同,...

    apache-mesos-cookbook

    Set up Mesos on different operating systems Use the Marathon and Chronos frameworks to manage multiple applications Work with Mesos and Docker Integrate Mesos with Spark and other big data frameworks ...

    terraform-dcos:DCOS Terraform安装和升级脚本

    DC/OS(Distributed Operating System)是Mesosphere公司开发的一个分布式操作系统,它在Apache Mesos之上构建,用于运行微服务、大数据和容器化应用程序。`terraform-dcos`项目是Terraform模块,专门用于部署和管理...

    Big Data Over DCOS

    DCOS 提供了一个统一的框架来部署、管理和协调大规模分布式应用和服务。 - **核心概念**: - **Linux操作系统**:基础的操作系统环境,支持用户模式和内核模式。 - **硬件系统组件**:包括CPU、内存、存储和网络...

    awesome-mesos:关于Apache Mesos的一切

    Apache Mesos是一个分布式系统内核,它为数据中心的操作提供了一个高效、灵活的资源调度和管理平台。这个开源项目由加州大学伯克利分校AMPLab开发,并且被许多大型公司如Twitter、Netflix和Airbnb等广泛使用。...

    Mesosphere-A-Short-History-of-Container-Orchestration

    - **2009 年**:Apache Mesos 开始作为一个开源项目发展起来,旨在解决多租户环境下资源管理和调度的问题。 - **2013 年**:随着 Docker 的兴起,容器技术逐渐成为主流,这促进了 Mesos 在容器编排领域的应用。 ###...

    Mastering Mesos - Dipa Dubhashi

    Mesos是Apache软件基金会的一个项目,它为大数据处理、容器化应用等提供了资源调度和管理的底层支持。这本书对于想要深入了解Mesos、提升分布式系统管理能力的IT专业人士来说,是一份宝贵的资源。 1. **Mesos简介**...

    CNUT-深入浅出Mesos

    Singularity:基于Apache Mesos构建的服务部署和作业调度平台 ............. 33 Autodesk基于Mesos的可扩展事件系统 .................................................... 35 Myriad项目: Mesos和YARN 协同工作 .....

    ansible-mesos-cluster:Ansible剧本,用于构建多节点Apache Mesos集群

    ansible-mesos群集Ansible剧本,用于构建多节点Apache Mesos集群。集群配置在运行剧本之前,您需要在group_vars/all修改变量。 mesos_pkg_version是由mesos_pkg_version发布的Debian软件包。 marathon_pkg_version是...

    Apache Mesos Essentials(PACKT,2015)

    Apache Mesos is a cluster manager that provides efficient resource isolation and sharing across distributed applications, or frameworks. It allows developers to concurrently run the likes of Hadoop, ...

    Apache Mesos Essentials

    Apache Mesos是一个开源的分布式系统内核,它为分布式应用提供了资源管理和调度的核心功能。本书《Apache Mesos Essentials》旨在为读者提供Mesos的基础使用指南,同时深入探讨其内部工作机制,以及如何基于Mesos...

    HDFS on Apache Mesos.zip

    HDFS on Apache Mesos.zip

    mesos-python-examples:Apache Mesos的Python框架示例

    Apache Mesos是一个分布式系统内核,它为数据中心的资源管理和调度提供了一个抽象层。这个开源项目旨在让构建、运行和扩展分布式系统变得简单且高效。Mesos的核心是其资源分配和任务调度机制,它能够有效地在多台...

    mesos:Apache Mesos

    Apache Mesos是一个群集管理器,可提供有效的资源隔离和跨分布式应用程序或框架的共享。 它可以在动态共享的节点池上运行Hadoop,Jenkins,Spark,Aurora和其他框架。 请访问访问我们。 邮件列表 () () 文献...

Global site tag (gtag.js) - Google Analytics