ECI(Elastic Container Instance)阿里云弹性容器实例,是阿里云 Serverless 和容器化的弹性计算服务。用户无需购买和管理底层 ECS 服务器,只需要提供打包好的镜像,即可运行容器,用户仅需要为容器实际运行消耗的资源付费。
Fluid 如何支持 ECI 应用
Fluid 通过自动识别用户应用中使用的 Fluid PVC(PersistentVolumeClaim),将不同缓存 Runtime 的 FUSE 客户端以 Sidecar 的形式注入到 Serverless Pod 中。JuiceFS 客户端以 Sidecar 容器的方式单独为应用容器提供挂载服务,且与应用容器同生命周期,用户只需要为应用运行时的资源付费即可。
同时,为了提高数据加速能力,独立缓存集群可以长时间运行,只需单独开几台 ECS 节点用以运行各 Runtime 的缓存集群,为 Sidecar 提供分布式缓存服务。
整体架构如下图。

Why JuiceFS in AI
AI 训练场景会产生大量的小文件,同时 AI 作业管线(Pipeline)纷繁复杂、流程长,ML/DL 框架、MPI 框架、科学计算库、大数据计算引擎等不同组件需要对接不同的数据访问接口;当在 Kubernetes 平台上,尤其是 Serverless 环境使用传统文件系统也面临可靠性、访问性能等一系列问题。
JuiceFS 是一款为云上环境设计的分布式存储引擎,采用「数据」与「元数据」分离存储的架构,元数据引擎可以横向扩展,轻松支持百亿小文件存储;并且 JuiceFS 云服务版具备分布式缓存能力,对于机器学习中需要对同一个数据集反复训练等场景,可以大幅提升数据访问的性能。
JuiceFS 如何在 Fluid 中工作
通过 Fluid 我们可以快速搭建 JuiceFS 的环境,构建出 JuiceFS 独立缓存集群,缓存集群以 StatefulSet 的形式运行在 ECS 节点中,提供分布式缓存服务,而 FUSE 客户端以 Sidecar 的方式运行在业务 Pod 中,业务 Pod 则运行在 ECI 节点上。

使用流程
具体操作可参考官网 JuiceFS 文档[1]。
准备环境
目前 Fluid on ECI 还处于公测阶段,默认没有开启,但我们可以申请 AI 套件免费体验[2]席位。
申请完毕后,我们需要创建一个 ACK 版集群,集群的 Kubernetes 版本不低于1.18。在 ACK 集群中可以直接通过云原生 AI 套件,安装 Fluid。
使用 JuiceFS
JuiceFS 采用元数据和数据分开存储的设计,元数据会被存储在元数据服务引擎中,数据会被存储在对象存储中,对象存储需要用户自己提供。由于目前只有云服务版 JuiceFS 提供分布式缓存服务,本文以云服务版 JuiceFS 为例。
1.创建 Secret 第一步在 ACK 集群中创建保密字典,填入需要密文存储的 token(JuiceFS 控制台管理的 volume token)和对象存储的 accesskey 和 secretkey。
2. 创建 JuiceFSRuntime 和 Dataset 在 JuiceFSRuntime 中指定副本数及缓存地址等信息;在 Dataset 的 options 中填入对象存储的 bucket,在 encryptOptions 中填入引用 Secret 的值。
创建好后,可以在容器组页面看到有 Worker Pod 创建出来:

这 5 个 Worker 就组成了一个 JuiceFS 独立缓存集群,运行在 ECS 节点上,为客户端提供缓存服务。
3. 缓存加速 缓存集群创建好后,我们可以先进行缓存预热,创建 Dataload,指定上一步创建的 Dataset。「任务」页面的 jfs-load-loader-job 显示完成,即代表缓存集群预热完成。
4. 创建应用
最后我们可以创建应用了,在应用的数据卷中指定与 Dataset 同名的存储卷,这里我们创建一个 Job,启动命令为统计拷贝数据的时间。同时需要给 Pod 设置以下两个 Label:
alibabacloud.com/fluid-sidecar-target: eci
alibabacloud.com/eci: "true
应用创建好后,我们就可以看到 Pod 中有 Webhook 注入的 fluid-fuse 容器,且运行在虚拟节点上:

此时该 Pod 已经运行在 ECI 环境中了。该 Pod 运行完,日志中就会显示其拷贝数据的时间:

根据上面的步骤,可以看出,在有缓存加速的时候,拷贝数据的时间为 1m11.16s。为了与有缓存的情况做个对比,我们遵循上述过程,在不做缓存加速的情况下,测试拷贝数据的时间。过程为 创建 JuiceFSRuntime -> 创建 Dataset -> 创建应用。

可以看到,在没有分布式缓存的情况下,拷贝相同的数据时间为 19m 6.45s。对于有分布式缓存的时候,拷贝时间缩短到了 1m11.16s,速度提升了 19 倍。
总结
本文介绍了在ECI 环境中,用户如何借助 Fluid 使用 JuiceFS,并使用 JuiceFS 的分布式缓存能力,来提升云上应用的数据访问速率。未来,JuiceFS 亦会在 CSI 中通过 Sidecar 的方式支持 Serverless 场景,用户可以通过更加原生的方式在 ECI 中使用 JuiceFS。
关于作者

[1]
JuiceFS 文档: https://www.juicefs.com/docs/zh/cloud/kubernetes/use_in_eci/[2]
AI 套件免费体验: https://survey.aliyun.com/apps/zhiliao/DNgsKoIo1
AI 场景存储有难题 ?
欢迎扫码进群交流

合伙人兼社群助手
苏锐全天在线
用户案例
最佳实践
CSI Driver 性能分析和调优 HDFS数据迁移
跨云数据搬迁 ClickHouse架构探索
MySQL备份验证性提升10倍
关于Juicedata
Juicedata,杭州果汁数据科技有限公司是一家企业级存储服务供应商,开发了云原生分布式文件系统 JuiceFS,致力于在大数据时代下,为客户打造安全、高性能、自主可控的存储基础设施及服务。
2021年,JuiceFS 正式在 GitHub 上开源,已经获得 6.2 K star,欢迎开发者加入我们。 (github.com/juicedata/juicefs)
文章转载自Juicedata。点击这里阅读原文了解更多。

CNCF概况(幻灯片)

扫描二维码联系我们!
CNCF (Cloud Native Computing Foundation)成立于2015年12月,隶属于Linux Foundation,是非营利性组织。
CNCF(云原生计算基金会)致力于培育和维护一个厂商中立的开源生态系统,来推广云原生技术。我们通过将最前沿的模式民主化,让这些创新为大众所用。请长按以下二维码进行关注。





