以 Apache Mesos 计算的开源数据中心

数据中心

易云 · 2015-09-15 16:53

Apache Mesos 是一个管理器,它通过分布式的应用或框架提供了一种高效的资源隔离和共享。Mesos最初是由加州大学的伯克利分校开发的开源软件。它处于应用层和操作系 统之间,使其易于部署,并使得在大规模集群环境中部署应用变得更高效。它可以在一个节点动态共享的池中运行很多应用。Mesos的突出用户包括 Twitter、Airbnb、MediaCrossing、Xogito 以及 Categorize。

Mesos 利用了现代内核的特性 -- Linux 中的 "cgroups" 和 Solaris 中的 "zone" -- 来提供 CPU、内存、I/O、文件系统、机架位置等等的隔离。它最大的思想是形成异构资源的一个庞大集合。Mesos 介绍了一个称为资源提供的分布式的两层调度机制。Mesos 会决定给每个框架提供多少资源,而框架决定接受多少资源和在其上运行多少计算。这是一个轻量的资源共享层,通过给框架一个通用接口来访问集群资源,它使得 细粒度的共享跨越了不同的集群计算框架。其想法是部署多种分布式系统到节点的一个共享池中,这样能够提高资源利用率。很多现代的工作负载和框架都可以运行 在 Mesos 上,包括 Hadoop、Memecached、Ruby on Rails、Storm、JBossData Grid、MPI、Spark 和 Node.js,以及各种 web 服务器、数据库和应用服务器。

Apache Mesos 中的节点抽象

类 似于在 PC 操作系统管理桌面电脑上的资源访问,Mesos 保证应用程序能够在集群中访问它们所需要的资源。不同于为应用的不同部分配置各种服务器集群的方式,Mesos 允许你共享服务器的一个池,它可以运行你应用程序的不同部分,它们不会相互干扰并能够根据需求通过集群分配资源。这就意味着,它能够很容易地切换资源,如 果发生了严重的堵塞,它可以离开 framework1(例如,进行一个大数据分析)然后将它们分配到framework2(例如,web 服务器)中。这也减少了部署应用中的很多人为步骤,并能够自动转移工作负载,以提供容错和保持高的利用率。

微信三级分销
公众号推广
分布式光伏发电
开源网店系统

通过集群的资源共享以提高吞吐量和利用率

Mesos 本 质上是一个数据中心内核 -- 这意味着它是一个实际上将运行的工作负载彼此分离的软件。当这些任务实际运行时,它也需要额外的工具来使 engineer 获得它们在系统中运行的工作流并进行管理。否则,一些工作负载可能会消费所有的资源,或者重要的工作负载可能会与需要更多资源但不那么重要的工作负载发生 冲突。因此 Mesos 需要的不仅仅是一个内核 -- Chronos scheduler,一个 cron 的替代品,用于自动启动或关闭(并处理故障)运行在 Mesos 之上的服务。Mesos 的另一个部分是 Marathon,它提供 API 来启动、关闭和扩展服务(而 Chronos 可能是其中的一个服务)。

Chronos 和 Marathon 中的工作负载

架构

Mesos 由管理运行在各个集群节点上的 slave 守护进程的 master 进程以及在这些 slave 上运行任务的 framework组 成。master 通过framework 使用资源提供实现了细粒度的共享。每个资源提供是一个各个 slave 上空闲资源的列表。master 通过编制的策略,如公平共享或设置优先级,来决定为每个 framework 提供多少资源。为了支持一组不同内部框架分配策略,Mesos 允许组织者通过可插拔的配置模块定义他们自己的策略。

运行了两个 framework 的 Mesos 架构

每 个运行在Mesos 上的框架由两个组件组成:一个由 master 注册的用于提供资源的 scheduler(调度器),以及在slave 节点上启动来运行框架任务的 executor process(执行进程)。当 master 决定了提供多少资源给框架,framework 的scheduler就选择所请求的资源以使用。当 framework 接受了请求的资源,它会向 Mesos 传递一个它要启动的任务的描述信息。

Mesos 中的框架调度

上 图展示了一个框架如何调度并运行任务的示例。在第一步中,slave1 向 master 报告它有4 个 CPU 和 4GB 的内存空闲。于是 master 调用了分配模块,告诉framework1可以提供所有可用资源。在第二步中,master 发送了一个描述了这些资源的资源提供给framework1。在第三步中,framework 的 scheduler 回应了 master 一条关于在 slave 上运行了 2 个任务的信息,使用了 2 个CPU;1GB 内存和 1 个 CPU 用于第一个任务;2GB 内存用于第二个任务。最后,在第四步,master 发送任务给 slave,这个任务要求分配合适的资源给 framework 的 executor,executor 将启动两个任务(用虚线描绘的部分)。由于 1 个 CPU 和 1GB 内存仍然空闲,此时分配模块会将他们提供给 framework2。此外,当任务完成而资源变为空闲时,资源提供进程会重复上述步骤。

而 由 Mesos 提供的轻量接口允许它扩展并允许framework 独立发展。framework 会拒绝不满足其限制的提议并接受那些能够满足的。尤其是我们发现了一个简单的称为延迟调度的策略,它会在framework中等待指定的时间来获得节点保 存的输入数据,产生接近最优的数据局部性。

Mesos 的特性

  • 使用ZooKeeper 复制 master 以实现容错

  • 可以扩展上千台节点

  • 使用Linux容器将任务隔离

  • 多种资源的调度(内存和CPU等)

  • 支持 JAVA、Python 和 C++ API以部署并行应用

  • 查看集群状态的Web     UI

有一些软件项目可以构建在Apache Mesos 之上:

长期运行的服务

  • Aurora是一个运行在 Mesos 之上的服务调度器,允许您利用 Mesos 的可扩展性、容错性和资源隔离行运行一些需要长期运行的服务。

  • Marathon是一个构建在 Mesos上的个人PaaS。它会自动地处理硬件或软件的故障,并保证应用“总是可用“的。

  • Singularity是一个用于运行Mesos 任务的调度器(HTTP API 和     web接口):长期运行的进程、一次性任务以及调度作业。

  • SSSP是一个简单的web应用,它为在 S3 中存储或共享文件提供了一个白标签 "Megaupload"。

大数据进程

  • Cray Chapel是一个富有创造性的并行编程语言。Chapel Mesos 调度器可以让您在Mesos上运行Chapel程序。

  • Dpark是Spark的一个 Python clone,是一个用Python写的类 MapReduce 框架,运行在Mesos上。

  • Exelixi是一个用于大规模运行遗传算法的分布式框架。

  • Hadoop通过一个完整的集群在Mesos 分布式 MapReduce 作业中高效地运行 Hadoop。

  • Hama是一个基于 Bulk Synchronous 并行计算技术分布式计算框架,用于进行大规模科学计算,如矩阵、图形和网络算法等。

  • MPI是一个消息传递系统,设计于使用在各种各样的并行计算机上。

  • Spark是一个快速并具有多种用途的集群计算系统,它使得并行作业易于写入。

  • Storm是一个分布式的实时计算系统。Storm 使我们能够很容易地可靠地处理无界的数据流、实时处理 Hadoop 所批量处理的数据。

批量调度

  • Chronos是一个分布式的支持复杂作业拓扑的作业调度器。它可以作为 cron 的容错性更好的替代品来使用。

  • Jenkins是一个持续集成服务器。mesos-jekins插件允许其在 Mesos 集群中根据工作负载动态地启动工人进程。

  • JobServer是一个分布式作业调度器和处理器,它允许开发者们使用点和点击 web 界面来构建自定义的批量处理任务队列。

  • Torque是一个分布式资源管理器,提供批处理作业和分布式计算节点的控制。

数据存储

  • Cassandra是一个高可用分布式数据库。商品硬件或云基础设施中的线性可扩展性和经过证实的容错性使它成为关键任务的最佳平台。

  • ElasticSearch是一个分布式搜索引擎。Mesos使它可以易于运行和扩展。

  • Hypertable是一个高性能、可扩展、分布式的存储和处理系统,用于结构化和非结构化数据。

总结

流 行趋势如云计算和大数据,正在将组织从联盟中移出,并进入了拥有多种分布式系统来专门处理特定任务的情况。有了 Docker executor 对 Mesos 的帮助,Mesos 可以结合Chronos 和Marathon框架运行和管理Docker容器。Docker容器提供了一个一致、紧凑和灵活的打包应用的方法。使用 Mesos 上的 Docker 交付应用程序承诺了一个真正弹性、高效和一致的平台,以在云中或其前提下交付一系列应用程序。

参考资料:

http://www.infoq.com/cn/news/2014/08/singularity-apache-mesos

http://cloud.51cto.com/art/201507/484102_all.htm

http://www.wtoutiao.com/p/F5akzE.html

【云计算】mesos生态系统的更多相关文章

  1. Mesos和kubernetes

    Mesos和kubernetes http://dockone.io/article/956我坚定地认为,下一年里,它们的使用增长会更快,因此是时候回顾总结,为2016年做好准备了.本文我想讨论Mes ...

  2. 【云计算】jenkins,docker,mesos,marathon,k8s相关资料

    参考资料: 基于Apache Mesos 构建高可靠,高可用的Jenkins CI:http://blog.csdn.net/ebay/article/details/43529401 Docker ...

  3. 【云计算】mesos+marathon 服务发现、负载均衡、监控告警方案

    Mesos-dns 和 Marathon-lb 是mesosphere 官网提供的两种服务发现和负载均衡工具.官方的文档主要针对DCOS,针对其它系统的相关中文文档不多,下面是我在Centos7上的安 ...

  4. 【转】OpenStack和Docker、ServerLess能不能决定云计算胜负吗?

    还记得在十多年前,SaaS鼻祖SalesForce喊出的口号『No Software』吗?SalesForce在这个口号声中开创了SaaS行业,并成为当今市值460亿美元的SaaS之王.今天谈谈『No ...

  5. 【云计算】docker前世今生

    下一代云计算模式:Docker正掀起个性化商业革命 作者: 吴宁川  来源: ITValue  发布时间: 2015-09-20 10:41  阅读: 12976 次  推荐: 24          ...

  6. 下一代云计算模式:Docker正掀起个性化商业革命

    作者: 吴宁川  来源: ITValue  发布时间: 2015-09-20 10:41  阅读: 10008 次  推荐: 16   原文链接   [收藏] 文/ITValue 记者吴宁川 从 20 ...

  7. 转 下一代云计算模式:Docker正掀起个性化商业革命

    下一代云计算模式:Docker正掀起个性化商业革命 作者: 吴宁川  来源: ITValue  发布时间: 2015-09-20 10:41  阅读: 14052 次  推荐: 26   原文链接   ...

  8. 云计算下PAAS的解析一

    云计算下PAAS的解析一       PaaS是Platform-as-a-Service的缩写,意思是平台即服务. 把服务器平台作为一种服务提供的商业模式.通过网络进行程序提供的服务称之为SaaS( ...

  9. Spark 生态系统组件

    摘要: 随着大数据技术的发展,实时流计算.机器学习.图计算等领域成为较热的研究方向,而Spark作为大数据处理的“利器”有着较为成熟的生态圈,能够一站式解决类似场景的问题.那你知道Spark生态系统有 ...

随机推荐

  1. 第十四章:Annotation(注释)

    一:注解 1.当成是一种修饰符吧,修饰类及类的所有成员. 代码里的特殊标记,这些标记可以在编译.类加载.运行时被读取. 2.@Override:强制子类覆盖(重写)父类的方法. @Deprecated ...

  2. sublime text下代码太长brackethighlighter不能正确显示闭合高亮的解决方法

    用brackethighlighter显示高亮一直都有这个问题...也没在网上找到解决方案,就一直凑合着用,今天翻着配置文件玩,改了参数发现问题解决了...... 修改search_threshold ...

  3. Kettle_使用Pan.bat执行转换、Kitchen.bat执行作业

    参考资料:http://www.cnblogs.com/wxjnew/p/3620792.html 注意:使用bat文件执行速度比执行在spoon.bat中执行慢很多 一.使用Pan.bat执行转换 ...

  4. Java基础-基本数据类型转换案例

    java基本数据类型八中 byte = Byte short = Short char = Character int = Integer long = Long float = Float doub ...

  5. replace和replaceAll的区别

      replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是: 1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(Cha ...

  6. Unix/Linux 命令技巧

    锁定一个文件夹 为了我的数据隐私,我想要锁定我文件服务器下的/downloads文件夹.因此我运行了: chmod 0000 /downloads root用户仍旧可以访问,而ls和cd命令则不工作. ...

  7. BZOJ-1070 修车 最小费用最大流+拆点+略坑建图

    1070: [SCOI2007]修车 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3624 Solved: 1452 [Submit][Status] ...

  8. 洛谷P1508 Likecloud-吃、吃、吃

    题目背景 问世间,青春期为何物? 答曰:“甲亢,甲亢,再甲亢:挨饿,挨饿,再挨饿!” 题目描述 正处在某一特定时期之中的李大水牛由于消化系统比较发达,最近一直处在饥饿的状态中.某日上课,正当他饿得头昏 ...

  9. 【干货】Laravel --实战篇 UUID(唯一识别码)

    前言 : 一般的唯一识别id都是各种时间戳.毫秒级时间戳加php内置函数或者加上随机数等手段来生成的. 下面给大家介绍一个组件,也是我在各个实战项目中必不可少的一个组件,ramsey/uuid.一.r ...

  10. 解决IE apk变成zip:Android 手机应用程序文件下载服务器Nginx+Tomcat配置解决方法

    APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ...