美团增量数仓的探索与实践
1. 离线增量数仓自研HIDI架构
-
增量数据与增量数据生产:
- 增量数据包括用户维度、用户画像、用户行为等数据,通过特定事件(如
update、delete、replace)来记录数据的增删改。
- 通过MySQL binlog事件(
id、before value、after value)实现增量数据的追踪。
-
Hadoop生态下约束:
- Hive缺少主键概念,限制了
replace、delete和MVCC操作。
- HDFS文件不支持修改,BTree+覆盖写法不可行。
- 存在增量数据与存量数据的整合问题。
-
COW@美团:
- 采用DeltaMerge策略,将数万个任务部署于离线架构中。
- 支持读写百TB数据,增量数据与存量数据比为1:182。
- 支持复杂MVCC操作,但不支持事务。
2. 流式增量数仓基于Flink+HUDI+HBase的POC
-
需求特征变化:
- 需求转向分钟级数据可见性,支持基于状态的聚合计算。
- 面临状态更新频繁,传统ROLAP难以应对。
-
架构选择:
- 使用Flink算子改造,结合HUDI和HBase实现流式处理。
- 支持状态聚合计算,通过rowbinlog实现低延迟的写入和查询时的一致性保障。
3. 从增量数仓到批流融合架构迭代展望
-
批计算与流计算:
- 批处理和流处理各有优势,权衡成本与时效性。
- 批处理适合大量数据处理,流处理则注重实时性。
-
批流一体的数仓模型:
- 统一开发模型,融合Flink技术。
- 批流计算应灵活切换,支持多种处理模式。
-
多模式存储服务:
- 结合HIDI和Beluga,实现存算分离。
- 提供KVRPC和FSStream两种接口,支持行级和分区级事务。
总结
美团在增量数仓建设上经历了从离线到流式的转变,通过自研的HIDI架构解决离线场景下的数据整合与高效处理,以及基于Flink+HUDI+HBase的POC实现流式数据处理。后续迭代目标在于构建批流一体的数仓模型,通过多模式存储服务支持灵活的批流计算,满足不同业务场景的需求。