OPPO数据湖统一存储技术实践
作者简介:Xiaochun OPPO存储架构师
简述数据湖存储技术
OPPO数据湖存储CBFS的架构设计
数据湖存储CBFS的关键技术
数据湖存储CBFS的未来展望
高度灵活:数据的读取、写入和加工都很方便,可保存所有的原始数据
多重分析:支持包括批、流计算,交互式查询,机器学习等多种负载
低成本:存储计算资源独立扩展;采用对象存储,冷热分离,成本更低
易管理:完善的用户管理鉴权,合规和审计,数据“存管用”全程可追溯
协议接入层:支持多种不同的协议(S3、HDFS、Posix文件),可做到数据用其中一种协议写入,用另外两种协议也可直接读到
元数据层:对外呈现文件系统的层次命名空间和对象的扁平命名空间,整个元数据是分布式的,支持分片,线性可扩展
元数据缓存层:用来管理元数据缓存,提供元数据访问加速能力
资源管理层:图中的Master节点,负责了物理资源(数据节点,元数据节点)以及逻辑资源(卷/桶,数据分片,元数据分片)的管理
多副本层:支持追加写和随机写,对大对象和小对象都比较友好。该子系统一个作用是作为持久化的多副本存储;另一个作用是数据缓存层,支持弹性副本,加速数据湖访问,后续再展开
纠删码存储层:能显著降低存储成本,同时支持多可用区部署,支持不同的纠删码模型,轻松支持EB级存储规模
编码矩阵B∈R(k+m)×k,上面n行是单位阵I,下方m行是编码矩阵;k+m个数据块组成的向量,包含原始的数据块和m个校验块;
当某块丢失时:从矩阵B删除该块对应的行,得到新的矩阵 B',然后左边乘上B'的逆矩阵,即可恢复丢失的块,详细计算过程大家可线下阅读相关资料。
离线EC:整个条带k个数据单元都写满后,整体计算生成m校验块
在线EC:收到数据后同步拆分并实时计算校验块后,同时写入k个数据块和m个校验块
Access: 数据访问接入层,同时提供EC编解码能力
CM:集群管理层,管理节点,磁盘,卷等资源,同时负责迁移,修复,均衡,巡检任务,同一个集群支持不同EC编码模式并存
Allocator:负责卷空间分配
EC-Node:单机存储引擎,负责数据的实际存储
流式收取数据
对数据切片生成多个数据块,同时计算校验块
申请存储卷
并发向各个存储节点分发数据块或校验块
第一级缓存:本地缓存,其与计算节点同机部署,支持元数据和数据缓存,支持内存、PMem、NVme、HDD不同类型介质,特点是访问时延低,但容量少
第二级缓存:分布式缓存,副本数目弹性可变,提供位置感知能力,支持用户/桶/对象级的主动预热和被动缓存,数据淘汰策略也可配置