Fluid-架构详细解析

news2024/11/27 8:38:56

前言

Fluid 是云原生分布式数据集编排和加速引擎,主要服务于云原生场景下的数据密集型应用,例如大数据应用、AI 应用等。

其目标是为AI与大数据云原生应用提供一层高效便捷的数据抽象,将数据从存储抽象出来,以便实现:

  1. 通过数据亲和性调度和分布式缓存引擎加速,实现数据和计算之间的融合,从而加速计算对数据的访问。

  1. 将数据独立于存储进行管理,并且通过Kubernetes的命名空间进行资源隔离,实现数据的安全隔离。

  1. 将来自不同存储的数据联合起来进行运算,从而有机会打破不同存储的差异性带来的数据孤岛效应。

本文对Fliud的架构和组件进行详细解析,分析是如何实现上述目标的。

概念

Dataset:

数据集是逻辑上相关的一组数据的集合,会被运算引擎使用,比如大数据的Spark,AI场景的TensorFlow/PyTorchJob。可以理解为一个抽象的volume。告诉业务哪里可以获取到数据

Runtime:

实现dataset能力的实际执行引擎,定义了一系列生命周期的接口。可以通过实现这些接口,支持数据集的管理和加速。 目前 Fluid 支持的 Runtime 类型有 JuiceFS、Alluxio、JindoFS,其中 Alluxio、JindoFS 都是典型的分布式缓存引擎;JuiceFS 是一款分布式文件系统,具备分布式缓存能力。

dataload:

提供数据缓存、预加载能力的CRD。该CRD让业务可通过简单的配置就能完成整个数据预加载过程,并对数据预加载的许多行为进行自定义控制。比如指定一个或多个数据集子目录进行加载,设置数据加载时的缓存副本数量等。

核心组件

控制器(Fluid-controller-manager)

这些控制器包括:

Dataset Controller: 负责Dataset的生命周期管理,包括创建,与Runtime的绑定和解绑,删除。

Runtime Controller: 负责Runtime的生命周期管理,包括创建,扩缩容,缓存预热和清理的触发,删除等操作,这些操作实际是操作后端缓存引擎(Alluxio、juiceFS)

dataload controller:负责dataload的生命周期管理,包括创建,缓存状态变更,与runtime引擎对接,利用底层引擎实际缓存能力。

调度器(Fluid-scheduler)

负责在调度过程,结合数据缓存的信息,选择符合条件的节点。

Cache co-locality Plugin: 结合Runtime中的数据缓存信息,对于使用数据集的应用进行调度。无需用户指定缓存节点。

Prefetch Plugin: 在调度过程中,根据应用使用数据的特性触发Runtime进行数据预热

实现方式是利用webhook,给node打标签,给pod打上对应的亲和性、凡亲和性

CSI Driver

以daemonset的形式部署在每个节点上。负责与k8s交互,提供相应的csi接口,创建外部存储,并将目录挂载到pod中。

架构

Fluid 的整个架构主要分为三个部分。

Controller

包括 RuntimeController、 DatasetController、DataLoad Controller,分别管理 Runtime 、 Dataset 、DataLoad的生命周期,三者共同作用,以 helm chart 为基础,快速搭建出一套完整的分布式缓存系统,通常是 master + worker + fuse 的形式,向上提供服务。

master 是缓存系统的核心组件,通常是一个 pod;

worker 是组成缓存集群的组件,可以是多个 pod,可以设置个数;用于缓存远端数据。

fuse 是提供 POSIX 接口服务的组件,主要用于与engine的远端存储通信,并在节点上实现文件系统挂载。并与csi driver配合实现pod内目录挂载。

调度器

在有缓存的情况下,调度器会根据 worker 的节点信息,使得上层应用 pod 尽可能调度到有缓存的节点。

CSI Driver

提供标准CSI接口,与本节点kubelet通信。并与fuse配合,实现远端存储挂载到pod内目录。

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

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

相关文章

服务调用分布式session

目录一、nginx动静分离二、服务调用1、创建配置zmall-cart购物车模块2、创建配置zmall-order订单模块3、服务调用三、spring session实战1、什么是Spring Session2、为什么要使用Spring Session3、错误案例展示4、配置spring-session四、二级域名问题五、用户登录一、nginx动静…

从某种程度上来看,产业互联网是一次对于互联网的弥补和修正

如果对当下我们正在经历的这样一个时代进行一次定义的话,我更加愿意将其划归到产业互联网的范畴里。可能有人会说,这与产业互联网并无联系,因为从本质上来看,当下我们所经历的这样一个时代,其实是与互联网并没有太多联…

(深度学习快速入门)第五章第一节2:GAN经典案例之MNIST手写数字生成

获取pdf:密码7281 文章目录一:数据集介绍二:GAN简介(1)简介(2)损失函数三:代码编写(1)参数及数据预处理(2)生成器与判别器模型&#x…

Acwing---112.雷达设备

雷达设备1.题目2.基本思想3.代码实现1.题目 假设海岸是一条无限长的直线,陆地位于海岸的一侧,海洋位于另外一侧。 每个小岛都位于海洋一侧的某个点上。 雷达装置均位于海岸线上,且雷达的监测范围为 d,当小岛与某雷达的距离不超…

2023-02-09 mysql/innodb存储

前言 大家都知道 MySQL 的数据都是保存在磁盘的,那具体是保存在哪个文件呢?MySQL 存储的行为是由存储引擎实现的,MySQL 支持多种存储引擎,不同的存储引擎保存的文件自然也不同。InnoDB 是我们常用的存储引擎,也是 MySQL 默认的存储引擎。本文主要以 InnoDB 存储引擎展开讨…

centos7.6 设置防火墙

1、查看系统版本 cat /etc/redhat-release2、查看防火墙运行状态 systemctl status firewalld这里可以看到当前是未运行状态(inactive)。 3、关闭开机自启动防火墙 systemctl disable firewalld.service4、启动防火墙并查看状态,系统默认 22 端口是开启的。 sy…

云原生微服务应用平台 EDAS 2022 年度报告

作者:孤戈 最近一年来,随着我们的客户对于云技术的诉求从资源快速交付的服务,转变为对资源精益运用的服务。EDAS 团队结合公共云上所服务的企业类客户的几万个应用,选取了 8 个最具代表性的指标,进行了一次系统性的分…

进度条实时显示request下载文件的解决方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,科大讯飞比赛第三名,CCF比赛第四名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Linux -文件打包和解压缩

1、概念 在 Windows 上最常见的不外乎这两种 .zip,.7z 后缀的压缩文件。而在 Linux 上面常见的格式除了以上两种外,还有 .rar,.gz,.xz,.bz2,.tar,.tar.gz,.tar.xz,*.tar…

python--turtle

前言 就随便练练,学习一下turtle库的使用 正文 1.语法学习 import turtle #导入库 turtle.showturtle() #画笔显示箭头 turtle.write("我是大帅逼") #写下字符串 turtle.forward(300) …

拦截器interceptor总结

拦截器一. 概念拦截器和AOP的区别:拦截器和过滤器的区别:二. 入门案例2.1 定义拦截器bean2.2 定义配置类2.3 执行流程2.4 简化配置类到SpringMvcConfig中一. 概念 引入: 消息从浏览器发送到后端,请求会先到达Tocmat服务器&#x…

C语言一维数组篇【下】——每日刷题经验分享

一维数组篇——每日刷题经验分享~😎前言🙌有序序列插入一个整数 😊序列中删除指定数字 😊序列中整数去重小乐乐查找数字筛选法求素数总结撒花💞😎博客昵称:博客小梦~ 😊最喜欢的座右…

【FFMPEG源码分析】从ffplay源码摸清ffmpeg框架(一)

ffplay入口 ffmpeg\fftools\ffplay.c int main(int argc, char **argv) {/*******************start 动态库加载/网络初始化等**************/int flags;VideoState *is;init_dynload();av_log_set_flags(AV_LOG_SKIP_REPEATED);parse_loglevel(argc, argv, options);/* regis…

SSJ-21A AC220V静态【时间继电器】

系列型号: SSJ-11B静态时间继电器;SSJ-21B静态时间继电器 SSJ-21A静态时间继电器;SSJ-22A静态时间继电器 SSJ-22B静态时间继电器SSJ-42B静态时间继电器 SSJ-42A静态时间继电器SSJ-41A静态时间继电器 SSJ-41B静态时间继电器SSJ-32B静态时间继电…

dev-c++解决中文输出乱码问题

之前写c程序老是出现编译输出乱码的问题,就去博客,百度查阅了一番找了找了办法。废话不多说直接上操作。 首先打开dev-c-》工具-》编译选项 在第一行输入 -fexec-charsetgbk//生成gbk格式 -fexec-charsetUFT-8//生成UFT-8格式 也可以输入UFT-8格式&…

获取主机RDP连接凭据

为了避免每次连接服务器都进行身份验证,经常使用RDP的用户可能勾选保存连接凭据,以便进行快速的身份验证。这些凭据都使用数据保护API以加密形式存储在windows的凭据管理器中,路径为“%USERPROFILE%\AppData\Local\Microsoft\Credentials”执…

C语言---宏

专栏:C语言 个人主页:HaiFan. 专栏简介:本专栏主要更新一些C语言的基础知识,也会实现一些小游戏和通讯录,学时管理系统之类的,有兴趣的朋友可以关注一下。 #define预处理预定义符号define#define定义标识符…

云片验证码分析思路

本文仅供学习参考,又不懂的可以联系博主 目标链接: aHR0cHM6Ly93d3cueXVucGlhbi5jb20vcHJvZHVjdC9jYXB0Y2hh接口分析 captcha/get 验证码图片获取接口,GET请求,包含四个参数cb、i、k、captchaId 接口返回,如果是滑动验证码&…

「敏捷建模」敏捷设计理念的纪律

本文概述了敏捷软件开发团队的设计策略。这些策略对于扩展敏捷软件开发以满足现代IT组织的实际需求至关重要。敏捷的设计方法与传统方法截然不同,显然也更有效。重要的是要了解: 敏捷设计实践 敏捷设计理念 整个敏捷生命周期的设计 1.敏捷设计实践 从高…

大数据概述

一、大数据时代 大数据时代 三次信息化浪潮:个人计算机80年-互联网95年-物联网、云计算和大数据(2010年) 发展时间较短,大数据人才缺失大数据人才 培训出来的:Java-》大数据 优点:对于大数据技术的细节会比较清楚 缺点&#xff1…