专栏首页机器学习与系统分布式集群调度框架Mesos架构与实现

分布式集群调度框架Mesos架构与实现

简介

Mesos是一个在多个集群计算框架中共享集群资源的管理系统,它提高了集群资源利用率,避免了每个计算框架数据复制。

通过分布式两层调度模型实现了细粒度的资源分配:由Mesos决定为每个框架提供多少资源,框架决定接受哪些资源,以及把计算任务分配到哪里去执行。

问题与方案

2010年代计算框架百花齐放,相继出现MapReduce[1]、MPI、Dryad、Pregel等。很明显,新的集群计算框架还会不断涌现,不存在满足所有应用需求的集群计算框架,因此企业、研究机构会在同一个集群中运行多个计算框架。由于不同的计算框架是相互独立的,导致不同框架间共享数据和计算资源变得异常困难

Mesos实现轻量级的资源共享层,保证不同框架间细粒度的资源共享。它不仅要满足不同计算框架的需求,还要能够满足未来一些新的计算框架的需求。因此对Mesos的扩展性和效率有较高要求。

一个可选方案是中心化调度器,这种方案过于复杂、无法满足所有计算框架的需求,而且会带来大量的重构,并不现实。

Mesos提出一种新的调度抽象resource offer,Mesos决定提供多少资源给框架,框架决定接受哪些资源,将任务和资源匹配。这是一种去中心化的调度模型,它简单易于实现,而且给Mesos带来了很高的扩展性和健壮性,并且还有两个额外的优势:

1.支持运行同一个框架的不同版本2.易于新框架的开发

架构设计

设计哲学

最初的目的是为不同框架提供可扩展、弹性的内核,使得他们高效共享集群。但是考虑到计算框架的多样性和快速迭代,设计哲学演进为实现最小化的接口,保证框架间高效的资源共享,因此将任务调度和执行交给框架去做。

Mesos master通过resource offer模型,将集群中的可用资源提供给框架,提供多少资源基于不同的策略,比如公平策略、优先级策略等。同时还提供插件,允许框架实现自己的策略。

每个计算框架包括两部分:scheduler(调度器)和executor(执行器)。调度器注册到Mesos master便可接收资源,执行器运行在salve节点上负责执行具体的任务。框架不会指定自己需要多少资源,而是有Mesos master上报,合适就使用,不合适就拒绝。

上述的机制存在一个问题,如果一个框架需要的资源很多,迟迟得不到满足,就会出现饥饿(概率很低)。为此Mesos为框架提供filters机制,框架会告知Mesos自己明确会拒绝某些资源。

容错

Mesos master只保留少量必须的状态信息,这样当master崩溃时,新的master可以根据slave和框架上的信息快速恢复。master只包含slave、框架和运行中的任务这三种信息。

运行多个master时,使用zookeeper实现leader选举。

代码实现

Mesos基于C++实现,借用了很多现有的技术成果,比如C++ actor编程模型库libprocess[2]、ZooKeeper、Linux Container[3]等。

为了证明Mesos的轻量、易于框架的开发,文章作者基于Mesos开发了面向机器学习中iterative jobs的框架Spark,这就是后来名震业界的大数据处理框架。得益于Mesos的优良设计,Spark原型只用了大约1300行代码

总结

Mesos的出现有其特定的背景和目的,其解决的是行业内某一领域的痛点问题。Mesos实现了分布式两级调度模型,使得不同的计算框架可以使用同一个计算机集群中的资源,提高了集群资源的利用率。

另外,这一框架也促使另一个著名框架Spark的诞生。

Mesos来自于UC Berkeley AMPLab,从这篇论文中可以看到UC Berkeley计算机研究的显著特点:理论和实践相结合不纸上谈兵。这要求研究人员(导师、博士、硕士)不仅要有一流的研究能力,还要有很强的编程实践能力。

References

[1] MapReduce: https://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html [2] libprocess: https://github.com/3rdparty/libprocess [3] Linux Container: https://linuxcontainers.org/ [4] Apache Mesos: http://mesos.apache.org/


推荐阅读

欢迎关注,以工程师的视角带你了解世界

本文分享自微信公众号 - 机器学习与系统(aimlsystem),作者:陆道峰

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【分布式技术】分布式系统调度架构之两层调度,解决单体调度问题

    昨天分享了分布式系统架构中的单体调度架构,并且详细的学习了相关调度算法(【分布式技术】分布式系统调度架构之单体调度,非掌握不可),虽然单体调度架构简单易用,但是...

    架构师修炼
  • Mesos+Marathon+Docker构建docker集群化管理

    由Docker引领的容器技术最近一年在生产环境叫嚣的比较厉害,由于Docker本身拥有的一些特性,使得越来越多的人愿意并且想尝试在生产环境构建Docker,有关...

    BGBiao
  • Yarn与Mesos

    Yarn是Hadoop2的产物。提到这个问题就不得不说下Hadoop1与Hadoop2的差别。详细的内容可参考博客:https://blog.csdn.net/...

    YG
  • 作业调度中间件 Elastic-Job-Cloud 源码分析 —— 高可用

    本文重点分享 Elastic-Job-Cloud-Scheduler 如何实现高可用。

    芋道源码
  • 【推荐系统算法实战】 Spark :大数据处理框架

    http://spark.apache.org/ https://github.com/to-be-architect/spark

    一个会写诗的程序员
  • 「容器云平台」Mesos 和 Kubernetes的比较

    我们将评估这种系统的期望特性。在此基础上,我们将尝试比较目前使用的两个最流行的容器编排系统Apache Mesos和Kubernetes。

    首席架构师智库
  • 硅谷企业的大数据平台架构什么样?看看Twitter、Airbnb、Uber的实践

    Twitter是最早一批推进数字化运营的硅谷企业之一,其公司运营和产品迭代的很多功能是由其底层的大数据平台提供的。图7-2所示为Twitter大数据平台的基本示...

    华章科技
  • 大家之前是不是误解了DC/OS与Kubernetes之间的关系

    DC/OS 与 Kubernetes 本篇文章将主要介绍“Kubernetes on DC/OS”的实现机制与优势,不会就Mesos与Kubernetes的架构...

    企鹅号小编
  • 从Docker Machine到K8S:容器管理为啥有这么多工具?

    首先,我们当然可以在单台ESXi主机上通过CLI命令行或者Vmware Host Client可视化工具来创建和管理虚拟机;可以在这台主机上创建多个虚拟机等。

    嘉为蓝鲸
  • 基于Docker容器云技术的大数据智能挖掘处理一站式服务平台

    随着各行业信息化速度的加快,不同类型的数据皆呈现出爆发性的增长并质变成大数据。随着海量、细致的新数据源的不断呈现,大数据在运营、策划、营销等方面的应用,得到不同...

    机械视角
  • Mesosphere Data Center Operation Systeam

    原因:2016年11月29日 星期二 架设DCOS(Data Center Operation Systeam)。 说明:本文主要记录DCOS架设过程中的问题与...

    ZHaos
  • DCOS之Marathon初识篇

    Marathon是一个mesos框架,能够支持运行长服务,比如web应用等。是集群的分布式Init.d,能够原样运行任何Linux二进制发布版本,如 Tomca...

    zouyee
  • 基于大数据分析系统Hadoop的13个开源工具

    Hadoop是由Apache基金会开发的一个大数据分布式系统基础架构,最早版本是2003年原Yahoo! Doug Cutting根据Google发布的学...

    静一
  • 大数据高速计算引擎Spark

    从狭义的角度上看:Hadoop是一个分布式框架,由存储、资源调度、计算三部分组 成; Spark是一个分布式计算引擎,由 Scala 语言编写的计算框架,基于内...

    用户2337871
  • Mesos+Zookeeper+Marathon的Docker管理平台部署记录(1)

    随着"互联网+"时代的业务增长、变化速度及大规模计算的需求,廉价的、高可扩展的分布式x86集群已成为标准解决方案,如Google已经在几千万台服务器上部署分布式...

    洗尽了浮华
  • 跟我一起学docker(16)--单节点mesos集群

    IT架构圈
  • Mesos超配:让集群利用率可以达到100%

    Mesos超配特性是基于Google的Heracles系统,是解决低实际使用率问题的方案。

    博文视点Broadview
  • 用Mesos分布式架构进行工作

    小编说:2010年,一个旨在解决扩容问题的项目诞生——Apache Mesos,它在某种程度上对CPU、内存、磁盘资源进行抽象,从而允许整个数据中心如同单台大服...

    博文视点Broadview
  • Spark 在大数据中的地位 - 中级教程

    Spark最初由美国加州伯克利大学的AMP实验室于2009年开发,是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。

    木野归郎

扫码关注云+社区

领取腾讯云代金券