云原生存储CubeFS在大数据和机器学习的探索和实践 OPPO-安第斯智能云/唐之享 0 1 CubeFS产品介绍 0 2 0 3 0 4 CubeFS在机器学习的应用和实践CubeFS在大数据的应用和实践CubeFS的未来演进 CubeFS是托管在云原生计算基金会 (CNCF)的新一代云原生开源存储产品,目前处于孵化阶段,具备完整的文件和对象存储能力。 产品官网:https://cubefs.io 系统组件 ApplicationAWSS3SDK Client ObjectNode ServerVM… •资源管理子系统 •元数据子系统 •数据子系统 多副本引擎 Container POSIX/HDFSinterfaceVolume Master MetaPartition ObjectSubsystemDataPartition 纠删码引擎 •多协议客户端 (In-memory) … MetadataSubsystem MetaNode … DataNode … ErasureCodeStripe BlobNode DataSubsystem 元数据子系统特性 •可扩展:支持线性扩展 Root / 二层索引 •<parent_id,name>inode •inodelocation •高性能:全内存缓存 •高可靠:定期快照+Raftwal日志 •强一致:元数据分片(mp)在不同节点 上,Raft保证强一致性 ab cde mp0mp0mp0 mp1 mp1 mp1 mp2 mp2mp2 ………… multi-raft DataNode DataNode 顺序写 顺序写 DataNode DataPartition … DataPartition … DataPartition … multiraft 随机写 多副本引擎 •多种复制协议:顺序写采用NRW,随机 写采用Raft协议。 •大小文件优化:大文件分片存储,小文件聚合存储。 DataPartition 大文件分片 小文件聚合 •高效回收机制:基于文件系统punch hole机制提升已删除空间回收效率。 接入层 元数据中心 后台服务 accessaccess accessaccess ClusterManager Raft 数据均衡 数据巡检 存储资源池 数据修补 node node node node node node 坏盘修复 node node node node node node 异步删除 AZ0 AZ1 AZ2 •在线编码:接入层直接在线计算纠删 码后写入存储节点。 •高可用性:Raft秒级切换保证元数据服务高可用。 •高可靠性:后台服务数据巡检、数据 修补、坏盘检测等保证高可靠性。 •多AZ部署:支持1、2、3AZ部署,支持AZ级别容灾。 S3 HDFS IOT Spark POSIX以前 Tensorflow 图片文本 Flink Pytorch 音视频 Trino PaddlePaddle S3 HDFS POSIX 现在 多协议接入 •支持S3、POSIX、HDFS多种协议。 •多协议共享同一套元数据和数据。 •提升数据复用效率。 •提升资源利用率。 多协议双引擎可扩展 兼容S3、POSIX、HDFS等多种访问协议,协议间访问可互通。 支持多副本及纠删码引擎,用户可以根据业务场景灵活选择。 可轻松构建PB或者EB级规模的分布式存储,各个模块可水平扩展。 高性能多租户云原生 元数据全内存存储,支持多级缓存,大小文件优化。 支持多租户管理,提供细粒度的租户隔离策略。 基于CSI插件可快速在Kubernetes上使用CubeFS。 CubeFS在机器学习中的应用 多级缓存 2019 2020 2021 2022 CephFS存储 CephFS与CubeFS混存 CubeFS统一存储 CubeFS统一存储与多级缓存加速 root dir1 dir2 dir3 大目录 sub1 sbu1 …… sub2 大目录 •MDS的性能瓶颈:主备模式的MDS无 法水平扩容,单个MDS承担过多元数据导致高负载和高延时,GPU整体利用率低。 •MDS的稳定性:单节点内存资源有限, 超大目录遍历容易导致节点OOM,拆分目录难度系数高,无法解决热点问题。 MDS1 MDS2 MDS3 Others Audio NLP CV … •多集群:大CephFS集群拆分多个小集 Kubernetes GPU GPU GPU GPU 监控 权限 告警 …… 群,一定程度缓解了MDS稳定性问题,但是监控、告警需要分开配置,运营负担重。 •小集群:小集群模式无法支持大模型训 练;集群资源利用率较低,通常需要保证在存储水位在70%以内才能应对业务突发写增长。 时延敏感超大目录热点目录 •大规模训练对时延敏感,防止由于时延影响业务训练效果。 •训练任务的训练集或者测试集目录大小不可控,需要支持超大目录的访问。 •并行训练任务的访问,容易使得元数据节点成为性能瓶颈,无法充分利用集群性能。 root dir1 dir2 dir3 大目录 … … sub1 sbu1 大目录 sub2 •mp随机打散:mp随机落在不同 metaNode节点上,避免热点数据。 •支持水平扩展:metaNode支持水平扩展,无单点故障,保证高可用。 mp0 mp0 mp0 mp1 mp1 mp1 mp2 mp2 mp2 … 私有云 GPU GPU GPU GPU 0.1ms 2ms GPU GPU GPU GPU 公有云 •混合云的需求:私有云维护常态化的 GPU算力水位,应对突发的算力需求,采用公有云的GPU算力,实现弹性计算,降低整体TCO。 •混合云的痛点:私有云的内网延迟在 0.1ms级别,私有云机房与公有云机房采用专线的时延在2ms左右,导致从公有云GPU与从私有云GPU访问CubeFS性能相差几倍。 私有云 数据迁移 文件系统 GPU GPU GPU GPU 公有云 •使用公有云的文件系统:该方案涉及到 数据迁移,除了数据迁移成本高之外还 存在以下缺点: 如果全量迁移数据,任务无法弹回到私有云,无法实现弹性计算。 如果部分迁移数据,公有云和私有云同时产生数据,解决数据一致性问题是个难点。 部分数据存在安全合规风险,迁移到公有云需要解决安全问题。 私有云 数据迁移 GPU GPU GPU GPU 公有云 •公有云部署CubeFS:在公有云部署一 套CubeFS系统,除了会面临方案一的数据迁移代价高、数据一致性、数据安全等问题之外,还需要额外购买裸金属服务器,增加额外存储成本。 GPU GPU GPU GPU 私有云 0.1ms •元数据缓存:缓存inode和dentry信 2ms cfs-client diskcache inodedentry cachecachediskcache GPU GPU GPU GPU 公有云 息,可以大量减少fuse客户端的lookup和open读文件的开销。 •数据缓存:数据缓存可以利用GPU本地 云盘,无需申请额外存储资源,在保证数据安全同时提升效率。 •RESNET18在Dataloaderworker=1、16时,性能分别提升360%、114%。 •AlexNet在Dataloaderworker=16、24 基准性测试 公有云GPU-未加速私有云GPU公有云GPU-加速 10491057 983 875893 时,性能分别提升130%、80% •相比私有云部署,性能也有12%-27%的 提升。 459 454 578 832 330 348 342 112 28 130 RESNET18-w(1)RESNET18-w(16)AlexNet-w(16)AlexNet-w(24)RESNET50 CubeFS在大数据中的应用 阶段一 阶段二 阶段三 阶段四 HDFS 对象存储存冷数据 CubeFS存储冷数据 CubeFS作为统一存储 •NameNode单点瓶颈 •多个集群管理复杂 •弹性资源差,成本高。 •利用低成本对象存储承接大数据存储冷数据。 •利用CubeFS的低成本纠删码引擎承接冷数据,降低整体TCO。 •将CubeFS作为统一存储,承接大数据的冷热数据。 •多个集群长期资源不足。 •存算混合机型,单机成本高,能耗高。 •管理多个HDFS集群,管理难度大。 90% 80% 70% 60% 50% 40% 30% 20% 10% search cdh1 ht_ana ht_com ht_df ht_ad ht_alg ht_brower ht_bc sm_bj ht_acc ht_com1 ht_oor 0% HDFS集群 •缺少文件语义,list和rename操作的代价很大。 •相比HDFS集群,可以节约大概30% 成本,有进一步提升空间。 •数据降冷需要多一次从对象存储多副本迁移到纠删码的流量。 DATA write read 多副本系统 离线纠删码系统 P2 P1 D4 D3 D2 D1 R3 R2 R1 异步迁移 存储成本 •使用CubeFS纠删码引擎存储超过100PB冷数据。 •在线纠删码系统,降冷流程更快。 •元数据操作比对象存储性能好。 •存储冷数据:提供低成本、高可靠的 纠删码存储。 •存储热数据:提升资源利用率,降本增效。例如FlinkCheckPoint集群,有频繁瞬时大IO,依赖扩容解决,整体资源利用低的集群可以使用CubeFS存储。 YARN/Kubernetes Hive Flink Trino Spark 数据产品 降本 增效 易运维 高可用性 高耐久度 •降本:降低存储总TCO。 •增效:提高访问性能,对小文件友好。 •易运维:集群管理更加便捷。 •高耐久度:保证数据高耐久度。 •高可用性:保证服务的高可用性。 •多副本引擎:多副本数量弹性可调整,1、2、3副本模式可以选择,例如为大数据shuffle业务提供单副本,节约存储成本。 •纠删码引擎:提供多种不同冗余度的编 码模式,满足业务不同场景的需求;提供12个9的数据耐久度保证;支持跨AZ容灾。 单副本两副本三副本 D1 D2 D3 P1 P2 P3 dp0 dp1 dp1 dp2 dp2 dp2 RS(3,3) D1 D2 D3 P1 D4 D5 D6 P6 P2 P3 P4 P5 P7 P8 P9 P10 D1 D2 D3 D4 D5 D67 D78 D8 D9 D10 D11 D12 P1 P2 P3 P4 P5 P6 P7 P8 P9 RS(6,10) RS(12,9) 单TB成本单TB功耗 •降低单位存储的存储成本。 •降低单位存储的机器功耗。 •存算机型区分,扩容成本更低。 •低碳存储。 1 0.8 储 0.68 1 0.68 0.6 2U12HDD2S 2U24HDD2S 4U40HDD2S 4U60HDD2S 4U36HDD1S 存 成 本 0.60.55 0.560.5 单 位 4U106HDD2S 0.54 0.48 Client(Posix/HDFS/S3/CSI) MEM SSD cache 读/写 读 SSD SSD 多副本引擎 缓存 HDD HDD 多副本引擎 生命周期 HDD HDD 纠删码引擎 •本地缓存:计算节点本地缓存元数据和 数据,支持内存、PMem、NVMe、HDD不同类型介质。 •副本缓存:多副本引擎可以作为缓存使 用,用于缓存纠删码的存储数据。高 成本性能 低 小文件聚合 多副本引擎小文件优化: •小文