k8s云原生-Fluid-Fluid概览

作者: K8S实践指南

Fluid的功能目标与应用场景

Fluid是一款开源的云原生基础架构。在计算和存储分离的大背景驱动下,Fluid的目标是为AI与大数据云原生应用提供一层高效便捷的数据抽象,将数据从存储抽象出来,以便实现:

  1. 通过数据亲和性调度和分布式缓存引擎加速,实现数据和计算之间的融合,从而加速计算对数据的访问。
  2. 将数据独立于存储进行管理,并且通过Kubernetes的命名空间进行资源隔离,实现数据的安全隔离。
  3. 将来自不同存储的数据联合起来进行运算,从而有机会打破不同存储的差异性带来的数据孤岛效应。

通过Kubernetes服务提供的该数据层抽象,就可以让数据像流体一样在诸如HDFS、OSS、Ceph这样的存储源和Kubernetes上层的云原生应用计算之间灵活高效地移动、复制、驱逐、转换和管理。而具体的数据操作对用户透明,用户不必再担心访问远端数据的效率,或是管理数据源的便捷性,以及如何帮助Kuberntes做出恰当的调度决策等运维问题。用户只需以Kubernetes原生数据卷的方式直接访问抽象出来的数据,剩余任务交给Fluid完成。 Fluid项目当前主要关注数据集编排和应用编排这两个重要场景。数据集编排可以将指定数据集的数据缓存到指定特性的Kubernetes节点;而应用编排将指定该应用调度到可以或已经存储了指定数据集的节点上。这两者还可以组合形成协同编排场景,即协同考虑数据集和应用需求进行节点资源调度。

为什么云原生需要Fluid

云原生环境与更早的大数据处理框架在设计理念和机制上存在天然分歧。深受Google三篇论文GFS、MapReduce、BigTable影响的Hadoop大数据生态,从诞生之初即信奉和实践“移动计算而不是数据”的理念。因此以Spark,Hive,MapReduce为代表的数据密集型计算框架及其应用为减少数据传输,其设计更多地考虑数据本地化架构。但随着时代的变迁,为兼顾资源扩展的灵活性与使用成本,计算和存储分离的架构在更新兴的云原生环境中大行其道。因此云原生环境里需要类似Fluid这样的一款组件来补充大数据框架拥抱云原生以后的数据本地性的缺失。

此外,在云原生环境中,应用通常以无状态(Stateless)微服务化方式部署并不以数据处理为中心;而数据密集型框架和应用通常以数据抽象为中心,开展相关计算作业和任务的分配执行。当数据密集型框架融入云原生环境后,也需要像Fluid这样以数据抽象为中心的调度和分配框架来协同。

针对当前Kubernetes缺乏对应用数据的感知和优化,以及像Alluxio这样的数据编排引擎难以直接驱动云原生应用等架构层的局限,Fluid提出将数据应用协同编排、智能感知、联合优化等一系列创新方法,并且基于Alluxio形成一套云原生场景下数据密集型应用的高效支撑平台。

具体的架构参见下图:

概念

Dataset: 数据集是逻辑上相关的一组数据的集合,会被运算引擎使用,比如大数据的Spark,AI场景的TensorFlow。而这些数据智能的应用会创造工业界的核心价值。Dataset的管理实际上也有多个维度,比如安全性,版本管理和数据加速。我们希望从数据加速出发,对于数据集的管理提供支持。 Runtime: 实现数据集安全性,版本管理和数据加速等能力的执行引擎,定义了一系列生命周期的接口。可以通过实现这些接口,支持数据集的管理和加速。 AlluxioRuntime: 来源于Alluixo社区,是支撑Dataset数据管理和缓存的执行引擎实现。Fluid通过管理和调度Alluxio Runtime实现数据集的可见性,弹性伸缩, 数据迁移。

核心组件

控制器(Fluid-controller-manager)

从逻辑上,每个控制器都是单独的进程,为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行。

这些控制器包括: Dataset Controller: 负责Dataset的生命周期管理,包括创建,与Runtime的绑定和解绑,删除。 Runtime Controller: 负责Runtime的生命周期管理,包括创建,扩缩容,缓存预热和清理的触发,删除等操作。 Volume Controller: 负责Dataset对应的数据卷的创建,删除。

调度器(Fluid-scheduler)

负责在调度过程,结合数据缓存的信息,选择符合条件的节点。 Cache co-locality Plugin: 结合Runtime中的数据缓存信息,对于使用数据集的应用进行调度。无需用户指定缓存节点。 Prefetch Plugin: 在调度过程中,根据应用使用数据的特性触发Runtime进行数据预热。

演示

我们提供了视频的Demo,为您展示如何通过Fluid提升数据访问速度。

演示 1: 加速文件访问

演示 2: 加速机器学习

快速体验Fluid

Fluid需要运行在 Kubernetes v1.14 及以上版本,并且需要支持CSI存储。Fluid Operator的部署和管理是通过 Kubernetes 平台上的包管理工具 Helm v3实现的。运行 Fluid前请确保 Helm 已经正确安装在 Kubernetes 集群里。

你可以参照以下文档,安装和使用Fluid:

  • [快速入门]

文章列表

更多推荐

更多
  • Kubenetes扩展教程-三、API 流扩展 忽必烈 API Flow,身份验证网页挂钩,授权网页挂钩,动态准入控制器,关键要点,证明,服务器 API 配置库,服务器 API 配置库,Webhook 配置资源,> —埃隆·马斯克 >> 商业巨头、工业设计师、工程师Kuber
    Apache CN

  • Kubenetes扩展教程-四、扩展 Kubernetes API kuble API 概述,自定义资源定义和控制器,聚合的 API 和扩展服务器,关键要点,API 版本控制,API 组,库 API 中的扩展点,Kubernetes 客户库,Kubernetes 中的运算符模式,kubebuilder
    Apache CN

  • Kubenetes扩展教程-七、即将到来的扩展点 服务目录,集群 API,关键要点,结论,> —西奥多·罗斯福 >> 美国第 26 任总统Kubernetes 凭借其在云原生世界中的强大基础获得了成功。它提供了一组丰富的特性来管理容器化的应用,并提供了各种扩展点来添加新的功能。
    Apache CN

  • Kubenetes扩展教程-六、基础设施扩展 云原生基础架构,存储插件,网络插件,设备插件,关键要点,容器存储接口,kubernetes 中的 CSI 插件,库柏网络模型,容器网络接口(CNI),设备插件 API,设备插件的开发和部署,> —马克·扎克伯格 >> 美国企业家、脸
    Apache CN

  • Kubenetes扩展教程-五、调度扩展 库调度程序概述,配置和管理多个调度程序,调度程序扩展器,关键要点,调度框架,配置详细信息,> —圣雄甘地 >> 印度律师、政治家、社会活动家、作家 调度器是 Kubernetes 的核心部分,用于将工作负载分配给集群中的节点。分
    Apache CN

  • Kubenetes扩展教程-二、`kubectl`插件 二、kubectl插件kubectl 安装和使用,立方插件设计,创建您的第一个 kubectl 插件,插件库:krew,关键要点,> —马歇尔·麦克卢汉 >> 媒体学者和评论家 命令行工具是开发人员的瑞士军刀。您可以连接到后端系
    Apache CN

  • Kubenetes扩展教程-一、简介 忽必烈再世,Kubernetes 扩展模式,关键要点,控制平面组件,节点组件,配置 Kubernetes 集群,控制器,web 手册,二进制插件,立方扩展点,> 卡尔沙堡 >> 美国诗人、传记作家、记者和编辑,三次获得普利策奖K
    Apache CN

  • Azure Kubernetes微服务教程-六、AK 的 CI/CD 介绍,快速浏览 DevOps,本次练习的目标,使用 Azure 门户创建 Azure Kubernetes 服务,使用 Azure 门户创建 Azure 容器实例,使用 Visual Studio 构建示例应用,使用 Azure Dev
    Apache CN

  • Azure Kubernetes微服务教程-五、保护和监控 AKS 上运行的应用 介绍,安全概念,蓝色库柏服务清单,监控概念,摘要,主安全,节点安全性,集群升级,网络安全性,不可告人的秘密,安全概念:结论,容器洞察,Azure 监视器功能,介绍首先,祝贺你完成了本书的 60%。在阅读完架构设计和模式之后,
    Apache CN

  • Azure Kubernetes微服务教程-二、微服务:架构和设计考虑 介绍,微服务架构优势,衍生商业价值,定义面向目标的分层方法,应用面向目标的分层方法,微服务设计,微服务的系统方法,微服务设计流程,目标和原则,平台,文化,摘要,附录,模块性,粘结性,相互关系,微服务架构目标和优势的成熟度模型,服务,解决
    Apache CN

  • 近期文章

    更多
    文章目录

      推荐作者

      更多