1、湖仓存储系统设计剖析和性能优化毕岩阿里云2023 湖仓系统核心设计性能优化湖仓系统阿里云EMR湖仓系统数据开发和治理数据湖存储数据湖计算计算层(弹性计算引擎)存储层(数据湖统一存储)开发层(数据开发与治理)数据开发数据治理数据集成任务调度Dataworks对象存储l标准型l低频型l归档型l深度归档文件存储E-MapReduceDatabricksDIMaxComputeHologresPAI开源引擎0101湖管理与优化层(数据管理与优化)数据湖构建与管理DLF数据湖构建权限管理元数据服务数据入湖JindoFS文件协议转换缓存加速开放数据湖格式分布式缓存加速数据探索版本过期/恢复文件合并/聚簇索
2、引/统计生命周期管理E-MapReduce统一Catalog存算分离多样workload(半/非)结构化数据批流一体事务ACIDSchema Evolution数据管理/审计开放/开源核心设计核心设计 元数据 Schema,配置,数据文件列表 Merge-On-Read元数据-DeltaLake元数据加载流程:定位最新的ckp元数据文件 List后面的delta log json文件 按版本号依次解析,得到:表的schema和配置 有效数据文件列表元数据-Iceberg元数据加载流程:定位当前metadata文件,得到:表的schema和配置 当前snapshot的manifest list文
3、件 解析manifest list文件,得到:一组manifest文件 解析manifest文件,得到:有效数据文件列表元数据-Hudi元数据加载流程:解析hoodie.properties,得到:表的schema和配置 获取有效数据文件列表:未开启metadata:List FileSystem+Timeline;开启:读取metadata表元数据DeltaLakeDeltaLakeIcebergIcebergHudiHudi加载方式分布式单点分布式是否list FSNNY分区裁剪YYYCol Stat存储事务日志元数据文件Metadata表文件裁剪YYY元数据合并定期每次commitMet
4、adata表定期Compaction元数据清理checkpointexpireclean+archiveMerge-On-Read 写:避免写放大(vs Copy-On-Write)读:合并增量数据 Compaction 等同于对需要合并的文件中数据执行一次COW方式的写入MOR-Hudi读写 1*FileGroup=1*base file+N*log file Log file内保存完整的更新数据记录,或删除的记录主键 查询时根据主键合并base/log file内的数据MOR-Deltalake Deletion Vectors(DV)DV查询:调整Plan适配带有DV的查询 Broadc
5、ast Deletion VectorDV写入:使用DV记录要标记数据所在文件的offset信息 RoaringBitMap 一个AddFile最多伴随一个DVMOR写放大写放大读放大读放大Copy-On-WriteExpensive writesFastest readsMerge-On-ReadPosition(Iceberg/Delta)Fast writesSlower readsEquality(Iceberg)Super-fast writesMuch slower readsAll records(Hudi)Super-fast writesMuch slower reads性能
6、优化查询其他影响查询:RSS(阿里云Celeborn)Native Engine:Databricks Photon,Velox,Gluten查询-元数据加载加载方式 单点加载:适用于小表,且有内存压力 Iceberg Delta-Standalone(Hive/Flink等)分布式加载:适用于大表,需启动Spark Job Delta Hudi查询-元数据-EMR ManifestEMR Manifest 2.2+PB(10+G元数据)核心ODS表 Hive/Presto元数据加载缓慢、内存压力大 支持定期/增量