【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

深入浅出 Mesos(三):持久化存储和容错

  • 2015-05-12
  • 本文字数:2873 字

    阅读完需:约 9 分钟

【编者按】Mesos 是 Apache 下的开源分布式资源管理框架,它被称为是分布式系统的内核。Mesos 最初是由加州大学伯克利分校的 AMPLab 开发的,后在 Twitter 得到广泛使用。InfoQ 接下来将会策划系列文章来为读者剖析 Mesos。本文是整个系列的第一篇,简单介绍了 Mesos 的背景、历史以及架构。

注:本文翻译自 Cloud Architect Musings ,InfoQ 中文站在获得作者授权的基础上对文章进行了翻译。


在深入浅出 Mesos 系列的第一篇文章中,我对相关的技术做了简要概述,在第二篇文章中,我深入介绍了 Mesos 的架构。完成第二篇文章之后,我本想开始着手写一篇 Mesos 如何处理资源分配的文章。不过,我收到一些读者的反馈,于是决定在谈资源分配之前,先完成这篇关于 Mesos 持久化存储和容错的文章。

持久化存储的问题

正如我在前文中讨论过的,使用 Mesos 的主要好处是可以在同一组计算节点集合上运行多种类型的应用程序(调度以及通过 Framework 初始化任务)。这些任务使用隔离模块(目前是某些类型的容器技术)从实际节点中抽象出来,以便它们可以根据需要在不同的节点上移动和重新启动。

由此我们会思考一个问题,Mesos 是如何处理持久化存储的呢?如果我在运行一个数据库作业,Mesos 如何确保当任务被调度时,分配的节点可以访问其所需的数据?如图所示,在 Hindman 的示例中,使用 Hadoop 文件系统(HDFS)作为 Mesos 的持久层,这是 HDFS 常见的使用方式,也是 Mesos 的执行器传递分配指定任务的配置数据给 Slave 经常使用的方式。实际上,Mesos 的持久化存储可以使用多种类型的文件系统,HDFS 只是其中之一,但也是 Mesos 最经常使用的,它使得 Mesos 具备了与高性能计算的亲缘关系。其实 Mesos 可以有多种选择来处理持久化存储的问题:

  • 分布式文件系统。如上所述,Mesos 可以使用 DFS(比如 HDFS 或者 Lustre)来保证数据可以被 Mesos 集群中的每个节点访问。这种方式的缺点是会有网络延迟,对于某些应用程序来说,这样的网络文件系统或许并不适合。

  • 使用数据存储复制的本地文件系统。另一种方法是利用应用程序级别的复制来确保数据可被多个节点访问。提供数据存储复制的应用程序可以是 NoSQL 数据库,比如 Cassandra 和 MongoDB。这种方式的优点是不再需要考虑网络延迟问题。缺点是必须配置 Mesos,使特定的任务只运行在持有复制数据的节点上,因为你不会希望数据中心的所有节点都复制相同的数据。为此,可以使用一个 Framework,静态地为其预留特定的节点作为复制数据的存储。

  • 不使用复制的本地文件系统。也可以将持久化数据存储在指定节点的文件系统上,并且将该节点预留给指定的应用程序。和前面的选择一样,可以静态地为指定应用程序预留节点,但此时只能预留给单个节点而不是节点集合。后面两种显然不是理想的选择,因为实质上都需要创建静态分区。然而,在不允许延时或者应用程序不能复制它的数据存储等特殊情况下,我们需要这样的选择。

Mesos 项目还在发展中,它会定期增加新功能。现在我已经发现了两个可以帮助解决持久化存储问题的新特性:

  • 动态预留。Framework 可以使用这个功能框架保留指定的资源,比如持久化存储,以便在需要启动另一个任务时,资源邀约只会发送给那个 Framework。这可以在单节点和节点集合中结合使用 Framework 配置,访问永久化数据存储。关于这个建议的功能的更多信息可以从此处获得。
  • 持久化卷。该功能可以创建一个卷,作为 Slave 节点上任务的一部分被启动,即使在任务完成后其持久化依然存在。Mesos 为需要访问相同的数据后续任务,提供在可以访问该持久化卷的节点集合上相同的 Framework 来初始化。关于这个建议的功能的更多信息可以从此处获得。

容错

接下来,我们来谈谈 Mesos 在其协议栈上是如何提供容错能力的。恕我直言,Mesos 的优势之一便是将容错设计到架构之中,并以可扩展的分布式系统的方式来实现。

  • Master。故障处理机制和特定的架构设计实现了 Master 的容错。

    首先,Mesos 决定使用热备份(hot-standby)设计来实现 Master 节点集合。正如 Tomas Barton 对上图的说明,一个 Master 节点与多个备用(standby)节点运行在同一集群中,并由开源软件 Zookeeper 来监控。Zookeeper 会监控 Master 集群中所有的节点,并在 Master 节点发生故障时管理新 Master 的选举。建议的节点总数是 5 个,实际上,生产环境至少需要 3 个 Master 节点。 Mesos 决定将 Master 设计为持有软件状态,这意味着当 Master 节点发生故障时,其状态可以很快地在新选举的 Master 节点上重建。 Mesos 的状态信息实际上驻留在 Framework 调度器和 Slave 节点集合之中。当一个新的 Master 当选后,Zookeeper 会通知 Framework 和选举后的 Slave 节点集合,以便使其在新的 Master 上注册。彼时,新的 Master 可以根据 Framework 和 Slave 节点集合发送过来的信息,重建内部状态。

  • Framework 调度器。Framework 调度器的容错是通过 Framework 将调度器注册 2 份或者更多份到 Master 来实现。当一个调度器发生故障时,Master 会通知另一个调度来接管。需要注意的是 Framework 自身负责实现调度器之间共享状态的机制。

  • Slave。Mesos 实现了 Slave 的恢复功能,当 Slave 节点上的进程失败时,可以让执行器 / 任务继续运行,并为那个 Slave 进程重新连接那台 Slave 节点上运行的执行器 / 任务。当任务执行时,Slave 会将任务的监测点元数据存入本地磁盘。如果 Slave 进程失败,任务会继续运行,当 Master 重新启动 Slave 进程后,因为此时没有可以响应的消息,所以重新启动的 Slave 进程会使用检查点数据来恢复状态,并重新与执行器 / 任务连接。

如下情况则截然不同,计算节点上 Slave 正常运行而任务执行失败。在此,Master 负责监控所有 Slave 节点的状态。

当计算节点 /Slave 节点无法响应多个连续的消息后,Master 会从可用资源的列表中删除该节点,并会尝试关闭该节点。

然后,Master 会向分配任务的 Framework 调度器汇报执行器 / 任务失败,并允许调度器根据其配置策略做任务失败处理。通常情况下,Framework 会重新启动任务到新的 Slave 节点,假设它接收并接受来自 Master 的相应的资源邀约。

  • 执行器 / 任务。与计算节点 /Slave 节点故障类似,Master 会向分配任务的 Framework 调度器汇报执行器 / 任务失败,并允许调度器根据其配置策略在任务失败时做出相应的处理。通常情况下,Framework 在接收并接受来自 Master 的相应的资源邀约后,会在新的 Slave 节点上重新启动任务。

结论

在接下来的文章中,我将更深入到资源分配模块。同时,我非常期待读者的反馈,特别是关于如果我打标的地方,如果你发现哪里不对,请反馈给我。我非全知,虚心求教,所以期待读者的校正和启示。我也会在 twitter 响应你的反馈,请关注 @hui_kenneth。

查看英文原文: DEALING WITH PERSISTENT STORAGE AND FAULT TOLERANCE IN APACHE MESOS


感谢郭蕾对本文的策划和审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-05-12 09:1110066

评论

发布
暂无评论
发现更多内容

Python源码剖析:深度探索Cpython对象-达观数据

NLP资深玩家

Python CPython 达观数据

Buck电路的原理及器件选型指南

元器件秋姐

电路 元器件 PCB设计 电源 Buck

低代码的出现,程序员要拒绝还是拥抱

互联网工科生

软件开发 低代码 JNPF

点云标注的算法优化与性能提升

来自四九城儿

不要爱上解决方案,而是爱上问题!什么是设计思维

汽车之家客户端前端团队

前端 设计思维 学会思考 ChatGPT

瓴羊QuickBI为什么被称为国内口碑最好的BI工具

夜雨微澜

对线面试官-Redis 八 | 基于哨兵HA的原理

派大星

Java 面试题

点云标注的标准化与数据共享

来自四九城儿

点云标注与自动驾驶的安全性

来自四九城儿

模块七:王者荣耀商城异地多活设计

家有两宝

架构训练营

基于 EMQX 和 Neuron 的工业物联网 MQTT Sparkplug 解决方案

EMQ映云科技

解决方案 工业物联网 sparkplug

2023全球数字经济大会召开,天翼云携手产业链共建开放共赢云生态

天翼云开发者社区

云计算

DPO 直接偏好优化:跳过复杂的对抗学习,语言模型本来就会奖励算法

Zilliz

AIGC LLM RLHF

问答对话文本数据:解锁智能问答的未来

来自四九城儿

区块链技术协议有哪些?

TiAmo

区块链 技术协议

RTC+AI|“即智”数智人创新内容生产体验,为企业降本增效再提速

ZEGO即构

数字人 虚拟直播 AI人工智能 数字人短视频 直播间

以开放安全底座赋能全球开发者,华为云构筑云原生安全防护体系

华为云开发者联盟

云计算 华为云 华为云开发者联盟 企业号 7 月 PK 榜

华为云云原生数据库,让企业离应用更进一步

新消费日报

ZipZapAI大模型与勇者斗恶龙:探索AVG游戏的无限可能

Ricky

AI Chat ChatGPT

一文详解新一代高效前端构建工具VITE-达观数据

NLP资深玩家

vite 前端构建 es modules

技术分享 | 如何利用GPU云服务器加速AIGC训练

阿里云弹性计算

云计算 阿里云 大模型 AIGC

私有化部署这件事儿

高端章鱼哥

低代码 私有化部署 JNPF

语音标注平台:推动语音技术发展的关键支撑

来自四九城儿

基于列存储的开源分布式NoSQL数据库Apache Cassandra入门分享

快乐非自愿限量之名

开源 NoSQL 数据库

GitHub上整理的一些实用的工具

这我可不懂

GitHub 程序员 提升效率

CentOS7系统更新yum源教程

百度搜索:蓝易云

MySQL Linux centos 运维 yum

CDN与前端技术

天翼云开发者社区

前端 CDN

超高速稳定!香港虚拟主机助你网站飞一般的速度!

一只扑棱蛾子

香港虚拟主机

HDC精彩回顾|7月8日OpenTiny重磅发布

OpenTiny社区

开源 前端 UI组件库

Maxon Qualcomm QCN9024 WiFi6 Module 4x4 MIMO PCI Express 3.0

wifi6module

深入浅出Mesos(三):持久化存储和容错_语言 & 开发_韩陆_InfoQ精选文章