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

2024-06-06 20:08

本文主要是介绍分布式集群调度框架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/


推荐阅读

  • 送书福利:迁移学习:迈向真正的人工智能

  • GitHub要改默认分支名了,你的开源项目受影响了吗?

  • 28岁财务自由、退休转行的程序员,我们能学到什么?

  • 推荐一门课程,MIT6.824分布式系统2020春季班,非常值得学习!

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

这篇关于分布式集群调度框架Mesos架构与实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1037100

相关文章

mybatis的整体架构

mybatis的整体架构分为三层: 1.基础支持层 该层包括:数据源模块、事务管理模块、缓存模块、Binding模块、反射模块、类型转换模块、日志模块、资源加载模块、解析器模块 2.核心处理层 该层包括:配置解析、参数映射、SQL解析、SQL执行、结果集映射、插件 3.接口层 该层包括:SqlSession 基础支持层 该层保护mybatis的基础模块,它们为核心处理层提供了良好的支撑。

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo