得益于核算本钱低、易于扩展、布置快捷、运维高效等多方面的优势,云核算渠道招引了越来越多的数据密布型运用在上面运转。现在,以 Kubernetes 为代表的云原生架构,因其灵敏的资源可负载性以及高效的运用编列调度,在许多AI/大数据等数据密布型场景中运用广泛。可是,云原生环境和数据密布运用核算结构在新近规划理念和机制上存在天然不合。因而,怎么协助数据密布型运用在云原生场景下高效、安全、快捷地拜访数据,是一个既有理论含义又具运用价值的重要问题。
为了处理大数据、AI 等数据密布型运用在云原生核算存储别离场景下,存在的数据拜访延时高、联合剖析难、多维办理杂等痛点问题,南京大学 PASALab、阿里巴巴、Alluxio 在 2020 年 9 月份联合发起了开源项目 Fluid。Fluid 本质上是一个云原生环境下的数据密布型运用的高效支撑渠道。本文将向咱们介绍 Fluid 项目是怎么将数据密布型运用更高效地运转于 K8s 环境中的。
项目布景简介
1. 技能展开布景
-
云核算渠道范畴
:以 Docker、Kubernetes 为代表的容器及其编列的云原生技能,在运用服务布置主动化运维的浪潮傍边得到了长足的展开。
-
大数据处理范畴
:以 Hadoop、Spark、Alluxio 为代表的大数据并行核算与分布式存储技能,在许多职业范畴大数据处理与存储的运用落地中简直构成了干流生态。
-
人工智能结构范畴
:PyTorch、Tensorflow、Caffe 等闻名 AI 练习结构,在广阔 AI 运用开发者重复运用和参加傍边,展开日益老练。
-
概况见 Gartner 陈述:
https://www.gartner.com/en/conferences/emea/data-analytics-switzerland/featured-topics/topic-ai-machine-learning
-
Spark3.0.1 runs on K8s:
https://spark.apache.org/docs/latest/running-on-kubernetes.html
2. 面临的问题
运转功率低下
:如上图所示,练习一个 RestNet50 神经网络,假如根据本地内存运转,大约每秒钟能练习近 1 万张图片;可是,在云原生环境下运转,根据 Cloud Storage 存储架构每秒练习的图片只能到达约 3000 张/秒,功用下降比较显着。
数据办理杂乱
:数据版别的多变、数据接口的多样、数据类型的笼统以及数据存储的异构,都给云原生环境下面向数据密布型运用支撑带来了应战。
3. 问题的原因剖析
4. 云原生环境下的数据支撑应战
详细地,云原生环境下数据支撑的应战首要分为三个方面
:
-
榜首:云渠道核算存储别离架构导致数据拜访延时高。为了监控资源灵敏性满足本地无依靠的要求,云原生运用大多选用核算存储别离架构。可是从拜访功率的视点来看,要求用云网络传输带宽,当数据密布型运用在云上运转时,会构成数据拜访瓶颈、功用下降。
-
第二:混合云场景下跨存储体系的联合剖析困难。大多公司/安排一般根据不同存储办理数据支撑多样化运用,具有其各自的特色。Ceph、GlusterFS、HDFS 都会被广泛运用,数据也一般会散落在这些异构存储傍边。可是,当需求联合数据进行归纳性剖析时,会添加数据移动本钱,必定导致在云原生环境下需求面临网络费用、等候延时、人工操作等比较杂乱的问题。
-
第三:云环境中数据安全办理与多维度办理杂乱。数据是许多公司的生命线,数据走漏、误操作、生命周期办理不妥都会构成巨大损失。怎么在云原生环境中保证数据的阻隔,保护好用户的数据生命周期,都存在较大应战。
5. Kubernetes 生态中缺失的一块笼统
Kubernetes 生态中现在短少数据密布型运用高效支撑的这块拼图。
现有 Kubernetes 环境能对许多资源进行很好的笼统,包含将资源目标核算笼统成 Pod、将存储笼统成了 PV/PVC、将网络笼统成了 Service。
云原生范畴还有一些存储笼统首要面向数据耐久化进行作业,供给目标和文件的耐久化存储办理。
但这些软件的功用缺少以运用为中心的数据笼统及相关生命周期办理。
6. 商铺购物形式演化的联想
-
产品
和数据都会被消费,产品会被顾客购买掉,数据会被运用读走,两者有必定相似性。
-
超市
和存储相似,都起到储藏与供给的功用。产品平常会储藏在超市的货架上,当购买时扮演到供给的人物;关于存储而言,咱们平常储藏的数据都会被耐久化到存储设备里,当运用需求时供给给用户。
-
客户
和运用相似,客户会到商铺消费购买产品。相似的,运用会到存储读取数据。
产品、超市(商铺) 、客
户形式,在曩昔几千年里展开得十分老练,十分安稳。直到 2000 年之后发生了颠覆性的改变,这便是电商的发生。电商发明晰线上购物形式,其特色表现在不再以店肆为中心而是以客户为中心,产品储藏在库房,客户能够在线上虚拟商铺挑选产品,最后由现代化物流将产品交给到客户,买卖进程高效快捷、买卖量更大。产品直接放在库房里,库房能够进行规范化、独立化办理,之后客户到电商渠道上购买货品,会十分快捷、便利。客户不需求到店肆,在地铁上、车上、办公室、家里都能够用手机、电脑进行购物,而且不会存在产品寻觅低效的状况,因为客户是在互联网上购物,都能够经过检索办法查找海量产品;线上购物的另一个优势是买卖频次变得更高,买卖量变得更大;客户也不需求有必要去店里提货,快递能够直接送货上门,十分便利。
Fluid 中心理念
1. Fluid 扮演云原生的“数据物流体系”人物
-
新视角
:从云原生资源调度结合与数据密布型处理两个方面,从头归纳审视云原生场景的数据笼统与支撑拜访。
-
新思路
:针对容器编列缺少数据感知,数据编列缺少对云上架构改变的感知,提出了协同编列、多维办理、智能感知的一系列理念和立异办法;然后构成一套云原生环境下数据密布型运用的高效支撑渠道。
-
新理念
:经过 Fluid 这个项目,期望让数据能够像流体相同在云渠道中、在资源编列层和数据处理层之间能够灵敏高效地被拜访、转化和办理。
2. 中心理念
1)供给云渠道数据集笼统的原生支撑
2)根据容器调度办理的数据集编列
3)面向云上数据本地化的运用调度
Fluid 架构功用
1. Fluid 体系架构
-
数据集的 Dataset Controller 担任整个数据集的生命周期办理,包含数据集的创立,以及要和哪个 Runtime 进行绑定。
-
Runtime Controller 担任数据集怎么在云原生渠道上被调度与缓存,应该放在哪些节点上,要有多少副本。
-
Volume Controller:因为 Fluid 是根据 K8s 运转,因而需求和 K8s 进行对接,这儿咱们运用的是 PVC(数据耐久卷)协议,这是 K8s 本地存储栈的协议,运用十分广泛,Fluid 与 PVC 的对接十分流通。
-
Cache co-locality Plugin:Cache co-locality Plugin 做的事便是结合前面数据编列的信息,把运用调度到最合适的节点上,然后尽量能够让用户去读到缓存节点里边的信息。
2. Fluid 的功用概念
三个重要概念
:
-
Dataset:数据集是逻辑上相关的一组数据的调集,不同数据集的特性和优化都是不相同的,所以关于数据集是要分隔办理的,共同的文件特性,会被同一运算引擎运用。
-
Runtime:真实完结数据集安全性,版别办理和数据加快等才能的履行引擎的接口,包含怎么创立、生命周期怎么办理等等,界说了一系列生命周期的办法。
-
AlluxioRuntime:来自 Alluxio 社区,是支撑 Dataset 数据办理和缓存的履行引擎高效完结。
1)加快
-
Observation: know the cache capacity easily.
-
Portableand Scalable: adjust the cache capacity on demand.
-
Co-locality: bring data close to compute, and bring compute close to data.
2)数据卷接口,一致拜访不同存储
3)阻隔
3. 怎么运用 Fluid
4. 怎么查看和观测 dataset 状况