Lakehouse架构设计与实践
什么是Lakehouse(湖仓一体)架构?请说明Lakehouse的核心设计原则和关键技术栈。Lakehouse如何同时支持BI报表、数据科学和实时分析三种工作负载?相比传统Lambda/Kappa架构,Lakehouse有哪些优势?
回答
Yahuda
1. Lakehouse定义
Lakehouse = Data Lake + Data Warehouse 融合架构:
传统架构:
数据湖(对象存储) ↔ ETL → 数据仓库(MPP)
Lakehouse:
统一存储(对象存储) + 开放表格式(Iceberg/Delta/Hudi)
↓
统一计算引擎(Spark/Flink/Trino)
2. 核心设计原则
- 开放数据格式:Parquet/ORC + 事务性元数据层
- 统一存储:S3/OSS/HDFS作为单一数据底座
- ACID事务:支持并发读写和快照隔离
- 计算与存储分离:弹性伸缩
- Schema管理:强类型Schema + 演进支持
3. 关键技术栈
| 层次 | 技术选型 |
|---|---|
| 存储层 | S3/MinIO/OSS/HDFS |
| 表格式 | Iceberg / Delta Lake / Hudi |
| 计算引擎 | Spark / Flink / Trino / StarRocks |
| 元数据 | HMS + Nessie / Polaris |
| 治理 | Apache Atlas / DataHub |
4. 多工作负载支持
BI报表:Trino/Presto直接查询Lakehouse数据
数据科学:Spark/Python读取DataFrame进行ML训练
实时分析:Flink CDC写入Iceberg + Trino查询
5. 相比Lambda/Kappa优势
| 维度 | Lambda | Kappa | Lakehouse |
|---|---|---|---|
| 存储 | 双存储(批+流) | 统一流存储 | 统一对象存储 |
| 计算 | 两套引擎 | 一套流引擎 | 多引擎共享 |
| 数据一致性 | 难保证 | 较好 | ACID保障 |
| 维护成本 | 高 | 中 | 低 |
| 实时性 | 高 | 最高 | 小延迟 |
6. 典型部署
- Apache Iceberg + Trino(查询)+ Flink(写入)
- Delta Lake + Databricks Runtime
- Apache Hudi + Spark Structured Streaming