云原生存储 CubeFS 在大数据和机器学习的探索和实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 云原生存储CubeFS在大数据和机器学习的
探索和实践
OPPO- 安第斯智能云 / 唐之享
2.
3. 0
1 CubeFS产品介绍
0
2 CubeFS在机器学习的应用和实践
0
3 CubeFS在大数据的应用和实践
0
4 CubeFS的未来演进
4. CubeFS是托管在云原生计算基金会
(CNCF)的新一代云原生开源存储产品,
目前处于孵化阶段,具备完整的文件和对
象存储能力。
产品官网:https://cubefs.io
5. AWS S3 SDK
Application
系统组件
•资源管理子系统
•元数据子系统
Client
Object Node
VM
Server
…
Container
POSIX / HDFS interface
纠删码引擎
Volume
Data Partition
•数据子系统
多副本引擎
Object Subsystem
Master
Meta Partition
(In-memory)
…
…
…
•多协议客户端
…
Meta Node
Data Node
…
…
Metadata Subsystem
…
Erasure Code Stripe
Blob Node
…
…
…
Data Subsystem
6. Root
元数据子系统特性
/
•可扩展:支持线性扩展
a
•高性能:全内存缓存
•高可靠:定期快照+Raft wal日志
二层索引
•<parent_id, name>inode
•inodelocation
b
e
d
c
•强一致:元数据分片(mp)在不同节点
上,Raft保证强一致性
mp0
mp0
mp0
mp1 mp1
mp2 mp2 mp2
… …
multi-raft
…
mp1
…
7. DataNode
多副本引擎
•多种复制协议:顺序写采用NRW,随机
写采用Raft协议。
•大小文件优化:大文件分片存储,小文
DataNode
DataPartition
顺序写
DataPartition
…
…
multi
raft
件聚合存储。
顺序写
DataNode
DataPartition
随机写
…
•高 效 回 收 机 制 : 基 于 文 件 系 统 p u n c h
DataPartition
hole机制提升已删除空间回收效率。
大文件分片
小文件聚合
8. • 在线编码 :接入层直接在线计算纠删
码后写入存储节点。
• 高可用性 :Raft秒级切换保证元数据
接入层
acces
s
acces
s
后台服务
元数据中心
acces
s
acces
s
Cluster
Manager
Raft
服务高可用。
数据巡检
• 高可靠性 :后台服务数据巡检、数据
持AZ级别容灾。
数据修补
存储资源池
修补、坏盘检测等保证高可靠性。
• 多AZ部署:支持1、2、3AZ部署,支
数据均衡
node
node
node
node
AZ0
node
node
node
node
AZ1
node
node
node
node
AZ2
坏盘修复
异步删除
9. 多协议接入
•支持S3、POSIX、HDFS多种协议。
•多协议共享同一套元数据和数据。
•提升数据复用效率。
•提升资源利用率。
S3
HDFS
POSIX
IOT Spark Tensorflow
图片文本 Flink Pytorch
音视频 Trino PaddlePaddle
S3
HDFS
以前
POSIX
现在
10. 可扩展
双引擎
多协议
兼容S3、POSIX、HDFS等 支持多副本及纠删码引擎, 可轻松构建PB或者EB级规模
多种访问协议,协议间访问 用户可以根据业务场景灵活 的分布式存储,各个模块可水
可互通。 选择。 平扩展。
高性能
多租户
云原生
元数据全内存存储,支持多 支持多租户管理,提供细粒 基于CSI插件可快速在
级缓存,大小文件优化。 度的租户隔离策略。 Kubernetes上使用CubeFS。
11. CubeFS在机器学习中的应用
12. 多级
缓存
2019 2020 2021 2022
CephFS存储 CephFS与
CubeFS混存 CubeFS统一存储 CubeFS统一存储
与多级缓存加速
13. root
• MDS的性能瓶颈:主备模式的MDS无
dir1
法水平扩容,单个MDS承担过多元数
据导致高负载和高延时,GPU整体利
用率低。
• MDS的稳定性 :单节点内存资源有限,
超大目录遍历容易导致节点OOM,拆
dir2
dir3
大目录
sub1
sbu1
… …
sub2
大目录
分目录难度系数高,无法解决热点问题。
MDS1
MDS2
MDS3
14. • 多集群:大CephFS集群拆分多个小集
CV
群,一定程度缓解了MDS稳定性问题,
• 小集群:小集群模式无法支持大模型训
练;集群资源利用率较低,通常需要保
证在存储水位在70%以内才能应对业
务突发写增长。
Audio
Others
Kubernetes
但是监控、告警需要分开配置,运营负
担重。
NLP
…
GPU
GPU
GPU
监控
GPU
权限
告警
……
15. 时延敏感
•
大规模训练对时延敏
超大目录
•
训练任务的训练集或者
热点目录
•
并行训练任务的访
感,防止由于时延影响 测试集目录大小不可 问,容易使得元数据
业务训练效果。 控,需要支持超大目录 节点成为性能瓶颈,
的访问。 无法充分利用集群性
能。
16. root
• mp随机打散:mp随机落在不同
dir1
metaNode节点上,避免热点数据。
• 支持水平扩展 :metaNode支持水平
扩展,无单点故障,保证高可用。
dir3
dir2
大目录
sbu1
sub1
…
…
sub2
大目录
mp0
mp2
mp0
mp0
mp1 mp1
mp2 mp2
mp1
…
17. 私有云
• 混合云的需求:私有云维护常态化的
GPU算力水位,应对突发的算力需 GPU GPU
求,采用公有云的GPU算力,实现弹 GPU GPU
0.1ms
性计算,降低整体TCO。
• 混合云的痛点:私有云的内网延迟在
0.1ms级别,私有云机房与公有云机房
2ms
采用专线的时延在2ms左右,导致从公
有云GPU与从私有云GPU访问
CubeFS性能相差几倍。
GPU GPU
GPU GPU
公有云
18. 私有云
• 使用公有云的文件系统:该方案涉及到
数据迁移,除了数据迁移成本高之外还
存在以下缺点:
数据迁移
如果全量迁移数据,任务无法弹回到
私有云,无法实现弹性计算。
如果部分迁移数据,公有云和私有云
文件系统
同时产生数据,解决数据一致性问题
是个难点。
部分数据存在安全合规风险,迁移到
公有云需要解决安全问题。
GPU GPU
GPU GPU
公有云
19. 私有云
• 公有云部署CubeFS:在公有云部署一
套CubeFS系统,除了会面临方案一的
数据迁移代价高、数据一致性、数据安
数据迁移
全等问题之外,还需要额外购买裸金属
服务器,增加额外存储成本。
GPU GPU
GPU GPU
公有云
20. 私有云
• 元数据缓存:缓存inode和dentry信 GPU GPU
息,可以大量减少fuse客户端的lookup GPU GPU
0.1ms
和open读文件的开销。
2ms
• 数据缓存:数据缓存可以利用GPU本地
云盘,无需申请额外存储资源,在保证
数据安全同时提升效率。
cfs-client
inode
cache dentry
cache
GPU GPU
GPU GPU
disk
cache
disk
cache
公有云
21. 基准性测试
公有云GPU-未加速
• RESNET18在Dataloader worker=1、16
私有云GPU
时,性能分别提升360%、114%。
公有云GPU-加速
1057
1049
983
• AlexNet在Dataloader worker=16、24
893
875
832
时,性能分别提升130%、80%
• 相比私有云部署,性能也有12%-27%的
578
提升。
459
454
330 348 342
112 130
28
RESNET18-w(1) RESNET18-w(16) AlexNet-w(16)
AlexNet-w(24)
RESNET50
22. CubeFS在大数据中的应用
23. 阶段一 阶段二 阶段三 阶段四
HDFS 对象存储
存冷数据 CubeFS存
储冷数据 CubeFS作为
统一存储
•
利用低成本对象存
•
利用CubeFS的低
•
将CubeFS作为统
• NameNode单点瓶颈 • 多个集群管理复杂 储承接大数据存储 成本纠删码引擎承 一存储,承接大数
• 弹性资源差,成本高。 冷数据。 接冷数据,降低整 据的冷热数据。
体TCO。
24. HDFS集群
70%
60%
50%
40%
30%
20%
10%
0%
• 管理多个HDFS集群,管理难度大。
80%
• 存算混合机型,单机成本高,能耗高。
90%
• 多个集群长期资源不足。
25. • 缺少文件语义,list和rename操作的
DATA
代价很大。
• 相比HDFS集群,可以节约大概30%
成本,有进一步提升空间。
• 数据降冷需要多一次从对象存储多副
本迁移到纠删码的流量。
read
write
R1 R2 R3
D1 D2 D3
多副本系统
异步迁移
D4
离线纠删码系统
P1
P2
26. • 使用CubeFS纠删码引擎存储超过
100PB冷数据。
• 在线纠删码系统,降冷流程更快。
• 元数据操作比对象存储性能好。
存储成本
27. • 存储冷数据:提供低成本、高可靠的
数据产品
纠删码存储。
• 存储热数据:提升资源利用率,降本
YARN / Kubernetes
增效。例如Flink CheckPoint集群,
有频繁瞬时大IO,依赖扩容解决,整
体资源利用低的集群可以使用CubeFS
存储。
Spark
Trino
Flink
Hive
28. • 降 本:降低存储总TCO。
• 增 效:提高访问性能,对小文件友好。
高耐
久度
• 易 运 维:集群管理更加便捷。
• 高耐久度:保证数据高耐久度。
• 高可用性:保证服务的高可用性。
降本
高可
用性
增效
易运维
29. • 多副本引擎:多副本数量弹性可调整,
1、2、3副本模式可以选择,例如为大
单副本 dp0 两副本 dp1 dp1
三副本 dp2 dp2
RS(3,3) D1 D2 D3 P1 P2 P3
数据shuffle业务提供单副本,节约存储
成本。
dp2
• 纠删码引擎:提供多种不同冗余度的编
码模式,满足业务不同场景的需求;提
供12个9的数据耐久度保证;支持跨AZ
容灾。
RS(6,1
0)
RS(12,
9)
D1 D2 D3 P1 D4 D5 D6 P6
P2 P3 P4 P5 P7 P8 P9 P10
D1 D2 D3 D4 D5 D6
D7 D7
D8 D8
P1 P2 P3 P4 P5 P6
D9
D10
P7
D11 D12
P8
P9
30. 单TB成本
• 降低单位存储的存储成本。
• 低碳存储。
1 1
0.8 0.68
0.68 0.6
0.6 0.55
2U12HDD 2S
• 降低单位存储的机器功耗。
• 存算机型区分,扩容成本更低。
单TB功耗
2U24HDD 2S
4U40 HDD 2S
4U60 HDD 2S
4U36 HDD 1S
0.56
0.54
4U106 HDD 2S
0.5
0.48
31. • 本地缓存:计算节点本地缓存元数据和
Client ( Posix / HDFS / S3/CSI)
数据,支持内存、PMem、NVMe、
MEM
HDD不同类型介质。
cache
SSD
读
读/写
• 副本缓存:多副本引擎可以作为缓存使
高
用,用于缓存纠删码的存储数据。
SSD
成本
HDD
生命周期
低
多副本引擎
SSD
多副本引擎
HDD
HDD
缓存
HDD
纠删码引擎
性能
32. 多副本引擎小文件优化:
•小文件聚合到单个大文件。
小文件聚合
纠删码引擎小文件优化:
•小文件采用填充方式,以空间换时间。
•RS(n,m)编码,写数据采用quorum机
制,任意写n+1份就成功;读任意n份就
36KB
填充
36KB
72KB
成功。
36KB 36KB 36KB
P(36KB) P(36KB) P(36KB)
33. map map map
shuffle
-worker shuffle
-worker shuffle
-worker
remote shuffle需求:
•高吞吐
•低成本
•快清理
reduce
remote shuffle
CubeFS解决方案:
•单副本降低成本
•异步删除
•同机部署加速访问,提供吞吐
rm
Data Parttion
Parttion
Data Par
tition
Data Par
tition
shuffle
-worker
DataNode
mv
异步
删除
34. 快
稳
省
• 多级缓存 • 无单点故障 • 低成本纠删码
• 大小文件优化 • raft保证高可用 • 副本数弹性可调
1
0.9999
0.9998
0.9997
0.9996
0.9995
0.9994
0.9993
HDFS
shuffle效率提升
CubeFS
稳定性提升
HDFS
CubeFS
总TCO下降
35. CubeFS未来演进
36. 智能
分层
GDS
多版本
快照
加解密
混合云
多云
QoS
回收站
37. • 产品官网: https://cubefs.io
• 代码仓库: https://github.com/cubefs
• 公众号 : 涵盖CubeFS架构设计、业务实践、源码剖析等多方面内容
• 小助手 : 提供产品交流、技术讨论等
CubeFS官方公众号
CubeFS微信小助手