湖仓一体技术演进与实践
技术演进背景与现状
湖仓一体技术是数据仓库和数据湖结合的演进结果,旨在解决传统架构中数据孤岛、一致性维护困难、分析效率低等问题。技术演进经历了三个阶段:
- 数据仓库阶段(90s):高效处理结构化数据,但无法处理半/非结构化数据
- 数据湖阶段(10s):支持各类数据存储,但缺乏数仓的高阶特性
- 仓湖流孤岛架构(15s):存在数据一致性难、分析效率低、数据成本高等问题
湖仓一体技术优势
湖仓一体通过元数据、缓存、索引层构建开放高性能的数据组织格式,具备以下优势:
- 数据组织:基于存储格式优化数据组织,支持行级修改和表结构进化
- 数据入湖优化:提供ACID事务能力,支持Upsert操作,简化ETL流程
- 分析引擎支持:支持Spark、Flink、Presto等主流引擎,提供Java Native API
- 统一存储:批流任务可使用相同存储模型,支持隐藏分区和分区进化
- 性能优势:支持Parquet/ORC/Avro行存列存,具备增量读取能力
腾讯实践案例
腾讯在湖仓一体方面开展以下实践:
- 加速数据入湖:通过Iceberg/Hudi格式实现数据一致性,支持实时读取
- 构建CDC Pipeline:实现链路简化,降低存储成本
- 近实时流批架构:基于FLIP-188方案,实现MQ与数据湖融合
- 优化Hive表:解决表结构进化、行级数据修正问题
技术现存问题
湖仓一体技术面临以下挑战:
- 数据治理:高并发写入导致海量小文件问题,元数据读取时延
- 查询性能:平衡读写性能,自动加速查询
- 流批一体:平衡流批读写性能,实现实时性
腾讯内核优化方案
腾讯通过以下优化提升湖仓一体性能:
- 内核优化:支持大宽表写入、流转批任务、流式写入去重
- 二级索引优化:采用Parquet bloom filter或独立bitmap索引
- 自动数据治理:
- 小文件合并:通过MSE算法自动合并小文件
- 自动重分布优化:基于theta sketch框架实现分区优化
- 自动索引:根据扫描filter信息推荐bloom filter或bitmap索引
实施效果
- 查询性能提升:数据有效过滤率80%+,计算资源降低6倍
- 写入性能优化:支持10000列宽表写入,异步构建索引节省空间
- 流批一体化:完整支持批流语义,统一SQL操作,提升时效性
未来规划
腾讯将继续推进湖仓一体技术演进,重点发展:
- 实时湖仓一体存储:优化分区管理,提升元数据读取速度
- 流批一体架构:完善实时湖仓架构,降低业务架构复杂度
- 自动数据治理:扩展自动索引、重分布等功能