1、美团增量湖仓Beluga的架构设计与业务实践2025.03.29 北京快元中王萌萌美团数据湖架构团队负责人典型场景2.Beluga的架构与设计3.业务实践4.未来计划1.典型场景-ODS数据入湖 ODS数据语义:全量表、快照表、增量表占存储 可同时存在,物理上相互独立 workload特征:增量数据:存量数据=1:几百keyvaluectimek1v120250322 12:00:00k2v220250322 13:00:00k3v320250323 14:00:00k4v420250324 12:00:00k5v520250324 13:00:00keyvaluectimek1v120250
2、322 12:00:00k2v220250322 13:00:00k3v320250323 14:00:00k4v420250324 12:00:00k5v520250324 13:00:00dt=20250322dt=20250323dt=20250324keyvaluectimek1v120250322 12:00:00k2v220250322 13:00:00k1v120250322 12:00:00k2v220250322 13:00:00k3v320250323 14:00:00k1v120250322 12:00:00k2v220250322 13:00:00k3v32025032
3、3 14:00:00k4v420250324 12:00:00k5v520250324 13:00:00dt=20250322dt=20250323dt=20250324快照表全量表增量表典型场景-长周期历史数据更新问题:少数长尾数据的更新,需要对全量数据进行读写,IO放大严重,资源浪费典型场景-流批一体的生产业务数仓的子链路迁移至湖生产全局看同时存流、批下游核设计思路ODS数据入湖MOR,一表三模式长周期历史数据更新基于ChangeLog的计算流批一体的生产兼顾流批共存的读写负载典型场景2.Beluga的架构与设计3.业务实践4.未来计划1.架构概要基于Hudi 0.12,复用TimeLin
4、e设计存储底座:HDFSFileLayout:两层分桶设计,面向流、批不同负载独立的MetaServer服务:维护Timeline、Instant、Bucket等组织关系管理compaction、clean等表服务引擎生态:Flink、Spark、PrestoBeluga的设计-ODS场景一表三模式:基于某时间字段计算数据所属的时序分区 分区数据存在继承关系 分区创建时记录timeline上界 查询时,按需求的语义选择timeline区间,即下界,进一步完成数据的组织增量数据占比少:MOR,减少IO放大 有序数据结构:LSMTreeBaseFileLogFile1LogFile3dt=2024
5、1103BaseFileLogFile1dt=20241102RepairFiledt=20241101全量表快照表增量表LogFile3dt=20241103LogFile1dt=20241102LogFile0dt=20241101BaseFileLogFile1LogFile3LogFile2LogFile2LogFile2dt=20241101BaseFileLogFile0RepairFiledt=20241102LogFile1dt=20241103LogFile2LogFile3timelinedelta commitmajor compactdelta commitdelta
6、commitrepair commitBeluga的设计-ODS场景Beluga的设计-流批下游共存的兼容两级分桶:L0:面向流读流写,HFile,参与批读MORL1:面向批读批写,Parquet动态调整分桶数:计算compact同时计算是否需要rescale分桶数量;流读写:在compact提交后的新事务中,按新L0分桶组织文件,业务可按需调整作业并发;批读写:rescale后启动的批作业应用新的L1分桶数量作为并发Checkdone:标记数据就绪,启动下游批任务调度FileGroup00219-1FileGroup1219220-1FileGroup