跳到主要内容

湖仓一体

问题​

什么是湖仓一体(Lakehouse)?如何选择表格式?

答案​

架构演进​

湖仓一体 = 数据湖的低成本存储 + 数据仓库的管理能力

湖仓一体架构​

表格式选型​

场景推荐理由
多引擎、厂商中立Iceberg最广泛的引擎支持
Databricks 生态Delta Lake原生深度集成
CDC / 频繁 UpsertHudiUpsert 性能最强
新项目选型Iceberg社区增长最快、最开放

表格式综合对比​

维度IcebergDelta LakeHudi
开源方ApacheDatabricksUber → Apache
ACID✅✅✅
时间旅行✅✅✅
Schema 演进✅ 强✅⚠️ 有限
分区演进✅ 强⚠️ 有限⚠️ 有限
隐藏分区✅❌❌
Upsert✅✅⭐⭐⭐⭐⭐
增量读取✅✅⭐⭐⭐⭐⭐
多引擎Spark/Flink/Trino/DorisSpark 为主Spark 为主
趋势📈 增长最快稳定稳定
2024+ 趋势
  • Iceberg 成为事实标准:各大引擎竞相支持
  • 表格式互通:Delta Lake UniForm 可兼容读 Iceberg/Hudi
  • 存算分离:Lakehouse 天然适合云原生
  • 流批一体:Flink + Iceberg/Hudi 实现实时湖仓

典型湖仓架构方案​

组件推荐选型
存储S3 / OSS / MinIO
表格式Apache Iceberg
CatalogHive Metastore / AWS Glue / Nessie
批处理Spark
流处理Flink
OLAP 查询Trino / Doris / StarRocks
BI 工具Superset / Metabase

常见面试问题​

Q1: 为什么不直接用数据仓库?​

答案:

痛点数据湖/湖仓的解决方案
仓库存储贵用 S3 存储,成本降低 10~100x
只能存结构化数据数据湖支持任意格式
厂商锁定开放格式 + 开源引擎
实时能力差Flink + 表格式实现实时

Q2: Lakehouse 有什么挑战?​

答案:

  • 性能不如专用数仓:查询延迟通常高于 ClickHouse/Doris
  • 架构复杂度:需要管理存储、表格式、引擎多个组件
  • 人才门槛:团队需要掌握多个技术栈
  • 小文件问题:流式写入产生大量小文件,需要定期治理

Q3: Catalog 的作用是什么?​

答案: Catalog 是表的注册中心,负责管理表的元数据(位置、Schema、快照)。

  • Hive Metastore:传统方案,广泛兼容
  • AWS Glue:AWS 托管服务
  • Nessie:支持 Git-like 分支管理的 Catalog
  • REST Catalog:Iceberg 标准 REST API

相关链接​