Fluid: 让大数据和 AI 拥抱云原生的一块重要拼图-阿里云开发者社区

开发者社区> 阿里云容器服务 ACK> 正文

Fluid: 让大数据和 AI 拥抱云原生的一块重要拼图

简介: 得益于容器化带来的高效部署、敏捷迭代,以及云计算在资源成本和弹性扩展方面的天然优势,以 Kubernetes 为代表的云原生编排框架吸引着越来越多的 AI 与大数据应用在其上部署和运行。然而,云原生计算基金会(CNCF)全景图中一直缺失一款原生组件,以帮助这些数据密集型应用在云原生场景下高效、安全、便捷地访问数据。

image.png


得益于容器化带来的高效部署、敏捷迭代,以及云计算在资源成本和弹性扩展方面的天然优势,以Kubernetes为代表的云原生编排框架吸引着越来越多的AI与大数据应用在其上部署和运行。然而,云原生计算基金会(CNCF)全景图中一直缺失一款原生组件,以帮助这些数据密集型应用在云原生场景下高效、安全、便捷地访问数据。


如何驱动大数据、AI应用在云原生场景下高效运行是一个既有理论意义又具应用价值的重要挑战性问题。一方面,解决该问题需考虑复杂场景下应用协同编排、调度优化、数据缓存等一系列理论与技术难题。另一方面,该问题的解决能够有力地推动广阔云服务场景下的大数据、AI落地应用。为系统化解决相关问题,学术界和工业界密切合作,南京大学PASALab副研究员顾荣博士、阿里云容器服务高级技术专家车漾、Alluxio项目创始成员范斌博士联合推动发起了Fluid开源合作项目

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提出数据应用协同编排、智能感知、联合优化等一系列创新方法,并且形成一套云原生场景下数据密集型应用的高效支撑平台。**
具体的架构参见下图:
image.png

演示

我们提供了视频的Demo,为您展示如何通过Fluid提升云上AI模型训练的速度。在这个Demo中,使用同样的ResNet50测试代码,Fluid加速和原生的ossfs直接访问相比,不论在每秒钟的训练速度,和训练总时长相比都有明显的优势,训练耗时缩短了69%。


image.png
视频Demo



快速体验Fluid

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

欢迎加入与反馈

Fluid让Kubernetes真正具有分布式数据缓存的基础能力,开源只是一个起点,需要大家的共同参与。大家在使用过程发现 bug 或需要的feature,都可以直接在 GitHub 上面提 issue 或 PR,一起参与讨论。另外我们有一个钉钉群,欢迎您的参与和讨论。

作者简介

顾荣  南京大学计算机系副研究员,研究方向大数据处理系统,已在TPDS、ICDE、Parallel Computing、JPDC、IPDPS、ICPP等领域前沿期刊会议发表论文20余篇,成果落地应用于中国石化、百度、字节跳动等公司和开源项目Apache Spark,获2018年度江苏省科学技术一等奖、2019年度江苏省计算机学会青年科技奖,当选中国计算机学会系统软件专委会委员/大数据专委会通讯委员、江苏省计算机学会大数据专委会秘书长;


车漾  阿里云高级技术专家,从事 Kubernetes 和容器相关产品的开发。尤其关注利用云原生技术构建机器学习平台系统,是GPU 共享调度的主要作者和维护者;


范斌 Alluxio开源项目的管理委员会成员(PMC Member)和源码维护者(Maintianer)。加入Alluxio项目之前, 范斌就职于谷歌, 从事下一代大规模分布式存储系统的研究与开发。他于2013年获得卡内基梅隆大学(Carnegie Mellon University)计算机系博士学位,博士期间从事分布式系统的设计与实现,是Cuckoo Filter的作者。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
阿里云容器服务 ACK
使用钉钉扫一扫加入圈子
+ 订阅

云端最佳容器应用运行环境,安全、稳定、极致弹性

官方博客
官网链接