Fluid 1.0 版发布,打通云原生高效数据使用的“最后一公里”

作者:顾荣

前言

得益于云原生技术在资源成本集约、部署运维便捷、算力弹性灵活方面的优势,越来越多企业和开发者将数据密集型应用,特别是 AI 和大数据领域应用,运行于云原生环境中。然而,云原生计算与存储分离架构虽然带来了资源经济性与扩容灵活性方面的优势,但也引入了数据访问延迟高、带宽开销大等方面的使用问题。

在数据访问接口层面,Kubernetes 只提供了传统数据访问接入层面的接口,即异构存储服务接入和管理标准接口(CSI,Container Storage Interface),对应用如何在容器集群中高效使用和灵活管理数据并没有定义。然而,这是很多数据密集型应用依赖这样的高层数据访问和管理接口,例如:在运行 AI 模型训练任务时,数据科学家需要能够管理数据集版本、控制访问权限、数据集预处理、动态数据源更新、加速异构数据读取等。但是,在 Fluid 开源项目诞生之前,Kubernetes 开源生态社区中还没有这样的标准方案,这是云原生环境拥抱大数据与 AI 应用的一块重要拼图。

为了应对这些挑战,由来自学术界的南京大学,工业界的阿里云团队和 Alluxio 开源社区共同发起了 Fluid 开源项目,通过对“计算任务使用数据的过程”进行抽象,提出了云原生弹性数据抽象概念(如:DataSet),并作为“一等公民”在 Kubernetes 中实现。围绕弹性数据集 Dataset,我们创建了云原生数据编排与加速系统 Fluid,来实现 Dataset 管理(CRUD 操作)、权限控制和访问加速等能力。在 2021 年 4 月份进入云原生计算基金会(CNCF)之后,经过 36 个月的不断研发迭代和生产环境验证,现在正式发布了其成熟稳定的 v1.0 大版本。

Fluid 开源项目网站:
https://fluid-cloudnative.github.io/

Fluid 项目 Github 开源 repo:
https://github.com/fluid-cloudnative/fluid

开源驱动发展,生产环境验证

Fluid 的测试体系涵盖了每日进行的单元测试、功能测试、兼容性测试、安全测试以及实际应用场景测试。每次版本发布前,Fluid 会在不同的 Kubernetes 版本中进行兼容性测试。

Fluid 技术源自校企科研合作,项目正式开源后,吸引了来自不同行业,不同规模的社区用户将 Fluid 应用到更广泛的场景中:AIGC,大模型,大数据,混合云,云上开发机管理,自动驾驶数据仿真等。Fluid 在支撑云上真实应用中不断迭代改进,并应用到生产环境中,系统的稳定性,性能和规模也变得成熟。

据公有云和私有云环境的统计,目前已有上千个 Kubernetes 集群在持续使用 Fluid,其中在用户机器学习平台可以支持最大上万节点规模。每天在云原生环境中创建 Fluid 的用户主要来自互联网、科技、金融、电信、教育、自动驾驶与机器人、智能制造等领域。Fluid 开源社区用户包括有小米、阿里巴巴集团、阿里云 PAI 机器学习平台、中国电信、微博、B 站、360、乾象、作业帮、赢彻、虎牙、Oppo、云知声、云刻行、深势科技等。更多使用信息请查看注册用户列表。

部分用户也在 Fluid 开源社区分享了他们在不同场景的实践:

  • 小米机器学习平台:基于 Fluid 的高效 Serverless 混合云容器 AI 平台 [ 1]
  • 从资源弹性到数据弹性,乾象如何将云上量化研究效率提升 40%?
  • 深势科技基于 Serverless 容器为科研人员打造高效的开发平台
  • 阿里集团基于 Fluid+JindoCache 加速大模型训练的实践
  • 作业帮检索服务基于 Fluid 的计算存储分离实践 [ 2]

Fluid 1.0 新增核心功能速览

Fluid v1.0 的发布,带来了以下几项核心功能:

1. 可灵活配置的多级数据亲和性调度机制

Fluid 的多级数据亲和性调度能力允许用户根据数据集缓存的位置信息对任务进行调度,而无需深入了解底层数据缓存的具体排布。Fluid 通过以下方式实现这一调度策略:

a. 数据缓存本地性级别: Fluid 根据数据缓存的本地性,即数据与计算任务的距离,将数据访问划分为不同的级别。这可能包括同一个节点(Node)、机架(Rack)、可用区(Availability Zone)、区域(Region)等不同级别。

b. 优先调度策略: Fluid 优先将计算任务调度到数据缓存所在的节点,实现最佳的数据本地性。如果无法实现最佳本地性,Fluid 会根据数据的传输距离,将任务调度到不同级别的节点上。

c. 灵活配置性: 考虑到不同云服务提供商和对亲和性定义的各不相同,Fluid 支持基于 label 进行自定义配置。用户可以根据具体的云环境和集群配置,调整调度策略,以适应不同的需求。

功能详见:Fluid 支持分层数据缓存本地性调度(Tiered Locality Scheduling) [ 3]

图片

2. 增加自定义数据操作 DataProcess 和触发策略的丰富

Fluid 负责在 Kubernetes 中编排数据和使用数据的计算任务,不仅包括上文提到的空间上的编排,也包括时间上的编排。空间上的编排意味着计算任务会优先调度到有缓存数据和临近缓存的节点上,这样能够提升数据密集型应用的性能。而时间上的编排则允许同时提交数据操作和任务,但在任务执行之前,要进行一些数据迁移和预热操作,以确保任务在无人值守的情况下顺利运行,提升工程效率。

为此,在最新版本的 Fluid 里提供一种新的数据操作类型 DataProcess,为数据科学家提供自定义数据处理逻辑的抽象;并且在此基础针对所有的 Fluid 数据操作提供不同的触发机制,包括:once, onEvent, Cron。

以下例子为每 2 分钟运行一次数据预热。

apiVersion: data.fluid.io/v1alpha1
kind: DataLoad
metadata:name: cron-dataload
spec:dataset:name: demonamespace: defaultpolicy: Cronschedule: "*/2 * * * *" # Run every 2 min

3. 数据流 DataFlow

进一步地,Fluid 提供 DataFlow 数据流功能,允许用户通过 Fluid 提供的 API 定义自动化的数据处理流程:DataFlow 支持 Fluid 的全部数据操作,包括缓存预热(DataLoad),数据迁移(DataMigrate),数据备份(DataBackup)等面向运维侧人员的自动化数据操作和面向数据科学家的数据处理(DataProcess)相结合,实现简单的数据操作。

以该图为例,整个的顺序是:

a. 将需要消费的数据从云上低速存储(例如:OSS、HDFS)迁移到高速存储(例如:JuiceFS,GPFS)

b. 启动 AI 模型训练

c. AI 模型训练完成后将数据迁移回低速存储

图片

注:DataFlow 数据流仅支持串联多个数据操作,根据定义的先后顺序一个一个执行。不支持多步骤并行执行、循环执行、按条件选择性执行等高级语义, 如果用户有明确此类需求,推荐使用 Argo Workflow 或者 Tekton。

4. 通过 Python SDK 使用 Fluid

在实践中,我们发现数据科学家更倾向于应该用代码(Python)而不是 YAML 来定义。为此 Fluid 提供更高层次的 Python 接口来简化数据集的自动化操作和数据流的编写,下面是上面流程的 Python 实现:

flow = dataset.migrate(path="/data/", \migrate_direction=constants.DATA_MIGRATE_DIRECTION_FROM) \.load("/data/1.txt") \.process(processor=create_processor(train)) \.migrate(path="/data/", \migrate_direction=constants.DATA_MIGRATE_DIRECTION_TO) run = flow.run()

样例详见以下链接:https://github.com/fluid-cloudnative/fluid-client-python/blob/master/examples/02_ml_train_pipeline/pipeline.ipynb

5. 新增 Vineyard 对象缓存引擎支持

Fluid 支持以插件的方式接入分布式缓存,目前已经支持 Alluixo, JindoFS, JuiceFS 等针对文件系统的分布式缓存引擎。在 Fluid 1.0 版本接入了分布式内存数据管理引擎 Vineyard,结合了 Vineyard 的高效数据共享机制和 Fluid 的数据任务编排能力,为数据科学家提供了以 Python 作为操作接口的方式,让他们能以熟悉的方式高效地进行 Kubernetes 上的中间数据管理。

图片

更多细节请查看:Fluid 携手 Vineyard,打造 Kubernetes 上的高效中间数据管理

6. 更多其他更新

在生产环境使用开源软件,稳定,规模和安全一直是重中之重。因此这也是 Fluid 持续关注和加强的领域。

a. 服务于大规模 Kubernetes 场景

在大规模的 Kubernetes 生产环境中,Fluid 的性能和扩展性已得到了很好验证。在真实的用户环境中,Fluid 能够稳定地支持有超过一万个节点的集群。在每天 24 小时的运行周期内,Fluid 负责处理超过 2500 个数据集的全生命周期管理和超过 6000 个通过 Fluid 挂载数据集访问数据的 AI 工作负载(总共约有 12 万个 Pods)。

考虑到 Fluid 已被广泛地部署在几个大规模的生产级 Kubernetes 集群中,我们对 Fluid 的控制平面组件进行了压力测试。测试结果显示,Fluid 的 Webhook 在 3 个副本的情况下能够以每秒 125 个请求(QPS)的速度处理 Pods 的调度请求,而 Webhook 处理请求的 90% 的延迟少于 25 毫秒。针对于 Fluid 的控制器,测试结果表明,每分钟能支持配置 500 个 Fluid 数据集以上的自定义资源。以上结果充分证明了 Fluid 可以满足规模化集群的使用场景。

b. FUSE 挂载点自动恢复增强的生产可用

在大规模的模型训练和推理任务场景下,FUSE 进程可能因为内存资源不足以及其他原因崩溃重启,造成业务容器内 FUSE 挂载点断联,出现数据访问异常并影响在线业务可用性。基于 FUSE 的存储客户端更容易发生这样的问题,一旦这些问题无法自动修复,则可能中断任务和服务,同时人工修复的复杂度和工作量也是巨大的。针对此问题,Fluid 1.0 优化了自恢复机制,并且已经在多个规模化用户场景下上线。

c. 收敛 Fluid 组件的安全权限

在 1.0 版本中,为了实践“权限最小化”的原则,Fluid 移除了不必要的 RBAC 资源访问和权限。

更多的更新可以查看:https://github.com/fluid-cloudnative/fluid/releases/tag/v1.0.0

后续版本规划

帮助 AI/大数据的用户在 Kubernetes 中更加高效、灵活、经济、安全地使用数据,这是 Fluid 开源项目的目标和愿景:

在 1.0 版本,Fluid 进一步打破了数据和计算的壁垒,实现了用户可以从异构 Kubernetes 环境(包括 runC 和 KataContainer)灵活使用异构数据源(对象存储,传统分布式存储,可编程的内存对象), 同时通过 Alluxio,JuiceFS,JindoFS,Vineyard 等多种分布式缓存引擎和数据亲和性调度提升应用访问数据的效率。

在未来版本中, Fluid 会继续与 Kubernetes 云原生生态紧密结合,同时更加关注数据科学家的效率和体验,我们计划专注解决以下问题:

  1. 针对大模型推理场景的优化,面向多种场景提升大模型加载效率。

  2. 与 Kubernetes 调度器相结合,自适应地实现根据 Kubernetes 调度器的调度结果,选择合适的数据访问方式(CSI 模式和 sidecar 模式的自动识别)。

  3. 除了面向运行环境,支持数据科学家在使用开发环境中更灵活地使用 Fluid,例如:解决数据源变更带来的容器重新启动,易造成临时数据丢失方面的问题。

致谢

我们感谢所有为 Fluid 1.0 版本发布付出努力的开源项目贡献者!详细贡献内容和贡献者信息请参见 Fluid 开源项目 1.0 版本 release note:https://github.com/fluid-cloudnative/fluid/releases/tag/v1.0.0

我们感谢 Fluid 开源社区用户给与的开源项目验证反馈和支持!Fluid 开源社区用户公开信息登记列表请参见:https://github.com/fluid-cloudnative/fluid/blob/master/ADOPTERS.md

参考链接:

[1] 小米机器学习平台:基于 Fluid 的高效 Serverless 混合云容器 AI 平台

https://www.infoq.cn/article/kco7hi5TcVE08ySwNIw7

[2] 作业帮检索服务基于 Fluid 的计算存储分离实践

https://www.infoq.cn/article/W65RcTI8AUhmoHVLkzWo?utm_source=tuicool&utm_medium=referral

[3] Fluid 支持分层数据缓存本地性调度(Tiered Locality Scheduling)

https://developer.aliyun.com/article/1382880

点击此处,查看 Fluid 1.0 Release Note!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/27075.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

easyexcel的简单使用(execl模板导出)

模板支持功能点 支持列表支持自定义头名称支持自定义fileName支持汇总 模板示例 操作 pom引入 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>${easyexcel.version}</version></dep…

uniapp中u-input点击事件失效

当给u-input设置了disabled/readonly属性后&#xff0c;pc浏览器中点击事件失效&#xff0c;但是app/移动端h5中却仍有效 解决办法 给外边包上一个盒子设置点击事件&#xff0c;给input加上css属性&#xff1a;pointer-events&#xff1a;none pointer-events CSS 属性指定在什…

糖料蔗精准测产 ,珈和科技倾力打造广西农险科技服务新标杆!

2024年中央一号文件中提到&#xff0c;鼓励地方发展特色农产品保险。随着近年来广西省对农业风险管理方式的不断探索与试点&#xff0c;糖料蔗、桉树、柑橘等种植收入保险需求迅速增加&#xff0c;传统的测产方式在效率上不仅耗时费力&#xff0c;而且难以满足大规模经济作物的…

Vue笔记(三)

上一篇&#xff1a;Vue二&#xff09;-CSDN博客 目录 1.自定义指令 v-loading的封装 2.插槽 文本插槽 文本插槽&#xff08;有默认值&#xff09; 具名插槽 作用域插槽 详细做一个练习 实现如下效果 目录结构 准备数据 父传子数据 使用文本插槽自定义按钮文本 实…

动态防护开启教程和体验感受

动态防护是雷池 WAF 社区版在版本 [6.0.0] 中新增的一个功能&#xff0c;它属于站点高级防护的一部分。动态防护的主要作用是自动动态加密网站的 HTML 和 JavaScript 源码&#xff0c;目的是阻止爬虫和攻击自动化程序的分析。这项功能在 [6.0.0] 版本中标记为 BETA 版本&#x…

2024 年最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)

OpenAi 环境安装 首先确保您的计算机上已经安装了 Python。您可以从 Python 官方网站下载并安装最新版本 Python。安装时&#xff0c;请确保勾选 “Add Python to PATH” &#xff08;添加环境变量&#xff09;选项&#xff0c;以便在 cmd 命令行中直接使用 Python。 安装 Op…

华为大咖说 | AI 是行业的未来, 还是另一个“元宇宙”?

本文作者&#xff1a;陈冠宏&#xff08;华为网络MSSD首席顾问&#xff09;全文约4497字&#xff0c;阅读约需10分钟 在本年度的517电信日上&#xff0c;中国电信高层在产品升级计划发布会中喊出“ALL in AI”战略&#xff0c;其震撼力让人瞩目。 自2022年11月OpenAI推出划时代…

机器学习归一化特征编码

特征缩放 因为对于大多数的机器学习算法和优化算法来说&#xff0c;将特征值缩放到相同区间可以使得获取性能更好的模型。就梯度下降算法而言&#xff0c;例如有两个不同的特征&#xff0c;第一个特征的取值范围为1——10&#xff0c;第二个特征的取值范围为1——10000。在梯度…

Facebook隐私保护:用户数据安全的挑战与应对策略

在当今数字化时代&#xff0c;随着社交媒体的普及和信息技术的快速发展&#xff0c;人们对于个人数据隐私和安全的关注越来越高。作为全球最大的社交网络平台之一&#xff0c;Facebook在用户数据保护方面面临着诸多挑战和责任。本文将深入探讨Facebook在隐私保护方面的现状、面…

k8s+springcloud+nacos部署配置

1 k8s 部署nacos-2.1.2配置k8s-nacos-statefulSet.yaml文件 apiVersion: v1 kind: Service metadata:name: nacos-headlessnamespace: rz-dtlabels:app: nacosannotations:service.alpha.kubernetes.io/tolerate-unready-endpoints: "true" spec:# 3个端口打开&…

VMware ESXi 8.0U2c macOS Unlocker OEM BIOS ConnectX-3 网卡定制版 (集成驱动版)

VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS ConnectX-3 网卡定制版 (集成驱动版) 发布 ESXi 8.0U2 集成驱动版&#xff0c;在个人电脑上运行企业级工作负载 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-esxi-8-u2-sysin/&#xff0c;查看最新版。原创作…

UE5.2打包安卓

目录 简介: 一. 根据官网配置 二. 手动定位SDK路径 三: 设置Android基本信息 四: 设置KeyStore 五: 开始打包 六:其他 七. 总结 简介: UE5.2 打包安卓是指将使用 Unreal Engine 5.2 开发的项目编译为可在安卓设备上运行的安装包。 以下是一般的打包步骤&#xff1a; 安装…

Spring Cloud全家桶(上)【Nacos、OpenFeign、LoadBalancer、GateWay、金丝雀灰色发布】

0.零基础入门微服务实战课 1.微服务和 Spring Cloud1.1 什么是微服务&#xff1f;1.2 什么是 Spring Cloud&#xff1f;1.3 微服务 VS Spring Cloud 2.为什么要学微服务&#xff1f;3.Spring Cloud 组件介绍1.什么是 Nacos?1.1 Nacos 功能1.1.1 配置中心1.1.2 注册中心 1.2 Na…

HashMap底层源码分析

目录 一、知识点二、数据结构三、resize() 扩容方法四、putVal() 添加数据方法五、remove() 删除方法六、removeTreeNode() 退化链表方法 一、知识点 加载因子: HashMap 的默认的加载因子: 0.75&#xff0c;用来限定阈值&#xff08;用于控制 HashMap 的饱和度&#xff09; 阈值…

红酒保存中的摆放方式:倾斜瓶身的重要性

在探讨云仓酒庄雷盛红酒的保存方法时&#xff0c;我们不得不提及一个关键的细节&#xff1a;瓶身的倾斜。许多人可能认为红酒的保存方式仅仅是温度控制和存储环境的湿度问题&#xff0c;然而实际上&#xff0c;摆放方式同样至关重要。雷盛红酒在保存过程中&#xff0c;需要一个…

安川机器人MA1440减速机维修方法

一、安川机械臂减速器维修方法 1. 齿轮磨损维修 对于轻微磨损的齿轮&#xff0c;可以通过重新调整啮合间隙来恢复性能。对于严重磨损的齿轮&#xff0c;需要更换新安川MA1440机械手齿轮箱齿轮。 2. 轴承损坏维修 对于损坏的轴承&#xff0c;需要更换新的轴承。在更换过程中&…

省市县选择三级联动(使用高德API实现)

省市县选择如果自己实现是比较麻烦的&#xff0c;最近发现可以使用高德实现省市县联动选择&#xff0c;实现后来记录一下供大家参考。 文章目录 最终效果&#xff1a;一、准备工作二、完整页面代码 最终效果&#xff1a; 实现单次点击获取省市县名称&#xff0c;选择完成后返回…

web端即时通信技术

web端即时通信技术 对于IM/消息推送这类即时通讯系统而言&#xff0c;系统的关键就是“实时通信”能力。所谓实时通信有以下两层含义 客户端可以主动向服务端发送信息。 当服务端内容发生变化时&#xff0c;服务端可以实时通知客户端。 HTTP局限 Http是客户端/服务器模式中…

免费分享:1901-2020全球气候数据集(附下载办法)

长期的全球其后数据不仅能够揭示长期的气候趋势&#xff0c;还为农业、水资源管理、公共卫生等多个领域的决策提供科学依据&#xff0c;对于推动可持续发展具有重要意义。 数据集简介 CRU TS&#xff08;Climatic Research Unit gridded Time Series&#xff09;数据集&#…

宽睿数字平台兼容TDengine 等多种数据库,提供行情解决方案

小T导读&#xff1a;最近&#xff0c;涛思数据与宽睿金融宣布了一项重要合作。在此之前&#xff0c;宽睿金融对 TDengine 进行了性能测试&#xff0c;并根据测试报告的结果&#xff0c;决定将 TDengine 接入宽睿数字平台&#xff0c;以提升高密度行情处理效率。本文将详细介绍此…