Fluid数据加速引擎概述
Fluid是云原生领域的一款分布式数据集编排与加速引擎,专为大数据和AI应用设计。它旨在通过透明的数据管理和优化调度,帮助AI和大数据应用高效利用任何存储的数据,而无需修改现有应用。Fluid支持自动化的数据调度、缓存加速和弹性扩展,提升数据访问效率,确保在大规模分布式环境中实现高效的存储和计算协同。
基本概念
- Dataset:是Fluid中定义的数据集资源,用于描述数据集的元数据和属性。它允许用户定义数据集的位置、格式、版本、数据访问权限等信息。Dataset可以与不同的存储引擎(如Alluxio、JuiceFS等)结合使用,确保数据的统一管理和高效访问。
- Dataset Operation:指的是对Dataset执行的数据操作任务,例如数据预热、数据迁移、数据缓存清理等。这些操作通过Fluid的CRD进行定义和管理,帮助用户优化数据访问性能或维护数据生命周期。
- Runtime:是Fluid中的自定义资源,用于描述应用程序的运行时环境。它表示数据处理任务所需的计算资源配置,如内存、CPU、GPU类型、存储需求等。不同的计算任务可以通过Runtime CRD进行管理和调度。
- CSI Mode:是Kubernetes存储管理模式之一,主要关注存储接口的标准化,允许Kubernetes使用各种存储系统(如块存储、文件存储、对象存储等),通过容器存储接口(CSI)来管理存储资源。它通过Pod级别的容器化存储挂载(FUSE Pod),简化了应用与存储的集成,特别适用于持久化存储需求。
- Sidecar Mode:是Kubernetes存储管理模式之一,关注辅助容器模式,通过将辅助容器(FUSE Sidecar Container)与主容器一起部署在同一Pod中,以增强主容器的功能,如文件系统挂载、缓存加速等。该模式轻量级、灵活,适合文件系统挂载和临时存储,但可能带来较大的资源开销。
Kubernetes集群现有问题
目前,在Kubernetes集群中运行AI和大数据任务面临以下挑战:
- 数据访问瓶颈:Kubernetes的采用计算存储分离架构实现资源解耦,却因远程数据访问导致显著的性能损耗,尤其在高频读取海量数据的AI训练场景中,网络延迟和带宽限制成为制约计算效率的关键瓶颈。
- 数据管理短板:Kubernetes通过CSI实现存储资源的基础抽象,但缺失关键的数据管理能力。在机器学习场景中,数据集特征定义、版本控制、权限管理、预处理和I/O加速等核心需求缺乏原生支持,迫使数据科学家构建额外工具链。
- 多形态CSI兼容性问题:不同Kubernetes形态(原生/边缘/Serverless)对CSI插件的支持存在差异,如Serverless形态通常无法使用第三方CSI插件,导致存储功能受限。
Fluid功能介绍
为解决云原生场景下计算存储分离架构带来的数据访问延迟高、多源数据管理复杂等痛点,Fluid提供以下功能:

- 数据集抽象:通过Kubernetes原生API,将底层异构存储(如 HDFS、对象存储、分布式文件系统)封装为统一的逻辑数据集(Dataset),屏蔽存储差异,提供透明访问能力。数据集抽象类似一个数据万能适配器,让应用程序能够以统一的API接口访问异构存储系统,无需关注底层存储位置、数据传输路径或加速机制。
- 数据集编排:通过动态调度缓存引擎(如Alluxio、JuiceFS等)提前将数据缓存到计算节点,减少数据传输距离,提高访问效率。
- 应用编排:结合Kubernetes调度器,将计算任务优先调度至已缓存数据的节点,减少网络传输开销,提升计算效率。
- 数据自动运维:通过CRD提供数据预取、迁移、备份等操作,支持一次性、定时、事件驱动等多种触发方式,便于用户集成到自动化运维体系中。
- 数据弹性与调度:将数据缓存技术和弹性扩缩容、数据亲和性调度能力相结合,提高数据访问性能。
- CSI兼容:支持多种环境,可根据环境运行不同的存储客户端,包括原生、边缘、Serverless Kubernetes集群、Kubernetes多集群环境。
Fluid系统架构
- 架构设计
Fluid 的架构基于Kubernetes生态构建,主要包括以下组件:
图2 组件关系图表1 组件说明 组件
说明
Dataset CRD
用于定义数据集的来源、访问模式及缓存策略。通过Dataset CRD,用户可以在Kubernetes中创建、更新、删除和监控数据集,便于高效的数据管理。
Runtime CRD
用于管理底层缓存引擎的生命周期(创建、扩缩容、预热),支持多种分布式缓存系统。
Dataset Controller
负责数据集的生命周期管理,包含绑定缓存引擎。
Runtime Controller
用于管理和调度与运行时环境相关的资源,包括计算任务和运行时所需的配置,例如根据负载情况自动扩展或缩减缓存节点。
Application Manager
负责调度和运行使用数据集的应用Pod,分为Scheduler和Webhook两个核心组件。
- Scheduler:通过Runtime获取缓存信息,Scheduler负责将已使用数据集的Pod优先调度到具有数据缓存的节点。
- Webhook:对于无法使用csi-plugin的环境,Webhook负责将PVC替换为FUSE Sidecar,并且确保FUSE容器先启动。
Runtime Plugin
为特定运行时环境提供扩展功能的插件。它可以与Runtime CRD结合使用,提供额外的资源管理、调度优化或执行环境支持。Runtime Plugin使得Kubernetes能够根据不同应用需求定制计算任务的执行方式,优化资源利用和执行效率。
CSI Plugin
以容器化方式启动,与业务容器解耦,从而独立管理存储资源。同时,它为集群中的存储资源提供可观测性,帮助实时监控存储性能和健康状况。
- 数据与计算协同机制
- 缓存预热:通过声明式API提前将远程数据加载到缓存引擎,避免首次访问延迟。
- 弹性伸缩:根据数据访问压力动态调整缓存节点规模,例如在训练任务高峰期自动扩容。
- 多协议支持:兼容POSIX、HDFS等接口,适配Spark、TensorFlow等多种计算框架。
Fluid应用场景
Fluid作为Kubernetes原生的分布式数据集编排器和缓存加速器,适用于大数据和AI应用程序等数据密集型应用程序,其常见的应用场景如下:
- 机器学习与AI训练
- 加速数据读取:通过内存缓存解决海量小文件读取瓶颈,例如在图像训练中将数据访问延迟降低50%以上。
- 数据版本管理:结合Dataset抽象,支持多版本数据集并行训练与快速切换。
- 大数据分析
- 跨存储联合查询:将HDFS与对象存储的数据联合缓存,支持Spark任务透明访问多源数据。
- 弹性资源利用:根据分析任务负载动态调整缓存资源,例如夜间缩容以节省成本。
- 混合云与边缘计算
- 数据迁移优化:在跨集群场景中,通过缓存预热减少数据同步时间。
- 边缘节点加速:将热数据缓存至边缘节点,支持低延迟的实时计算。