数据湖学习
要精通 数据湖 及核心组件如 Hudi、Iceberg、Delta Lake、Paimon,需要掌握数据湖架构原理、存储格式、元数据管理、事务机制、查询引擎集成等方面的知识。以下是系统化的知识体系:
✅ 一、数据湖基础与架构
-
数据湖 vs 数仓
- 数据湖:支持结构化+半结构化数据,灵活、低成本
- 数据仓库:强一致性、结构化数据、适合BI分析
- 数据湖架构演变:Data Lake → Data Lakehouse
-
数据湖核心组件
- 存储层:HDFS、S3、OSS、GCS
- 计算引擎:Spark、Flink、Trino、Presto、Hive
- 元数据管理:Hive Metastore、Catalog(Glue、Iceberg Catalog 等)
- 格式支持:Parquet、ORC、Avro
-
数据湖关键能力
- ACID 事务、Schema 演进、时间旅行、增量读取、流批一体
✅ 二、共性能力:Hudi / Iceberg / Delta / Paimon
-
表类型与写入模式
- Copy-on-Write(COW) vs Merge-on-Read(MOR)
- Append-only、Update/Delete 支持
- 分区表、非分区表、分桶表支持
-
元数据管理
- Manifest 文件、Snapshot、Metadata Log
- Catalog 接入(Hive、Glue、Nessie、Paimon Catalog)
-
事务机制
- 乐观锁 vs 悲观锁
- Snapshot Isolation、MVCC、多版本数据管理
-
Schema 演进与兼容性
- 添加/删除字段、字段重命名
- 向后兼容、向前兼容、双向兼容
-
时间旅行与版本控制
- 查询历史快照、增量变更、rollback/restore
- 支持基于时间戳或版本号回溯
✅ 三、各组件特点对比与深入
✅ 1. Apache Hudi
- 支持 COW/MOR,强流批一体(Flink/Spark)
- 写优化表 vs 读优化表
- 支持增量查询、预写日志(Write-Ahead Log)机制
- Hudi Timeline 管理、Compaction、Clustering
✅ 2. Apache Iceberg
- 强 Schema 演进、快照机制
- 支持多引擎(Spark、Flink、Trino、Hive)
- Manifest List + Manifest 文件管理元数据
- 支持分区进化、隐式分区、隐藏分区字段
✅ 3. Delta Lake
- Databricks 主导,Spark 集成深
- 支持 ACID、时间旅行、流批一体
- Delta Log(JSON + Parquet)管理元数据
- Delta Sharing 机制支持数据共享
✅ 4. Apache Paimon
- 原名 Flink Table Store,Flink 原生支持极佳
- 强调流式数据湖,适合实时数据场景
- 支持主键表、Changelog 捕获、Streaming Compaction
- Catalog 管理灵活,支持 Hive/Flink Catalog
✅ 四、查询与计算引擎集成
-
Spark
- Spark SQL + DataSource V2 接口
- 支持批处理、Structured Streaming
-
Flink
- Flink SQL + Table/Stream API
- 支持流式写入、流式读取、Changelog Capture
- Trino / Presto
- 支持 Iceberg、Delta、Hudi 的读取
- 与 Hive Metastore、Nessie 等 Catalog 集成
- Hive / Impala / ClickHouse
- 主要用于离线读取,兼容性需关注
✅ 五、运维与优化
- 表管理与维护
- Compaction、Vacuum、Optimize
- 清理旧版本、数据文件合并、元数据清理
- 性能优化
- 分区裁剪、列裁剪、文件大小控制
- 小文件合并、并发写入、缓存索引
- 数据一致性与容错
- 幂等写入、失败恢复、Checkpoint 管理
- 与 Kafka、Pulsar 等实时源结合
✅ 六、实战与项目经验
- 典型应用场景
- 实时数仓、用户行为分析、CDC 数据落地
- 数据版本回溯、数据共享平台
- 与数据中台对接
- 与 Hive、Flink、Doris、Kyuubi、Superset 等集成
- 数据质量校验、血缘分析、元数据治理
- 多引擎兼容性实践
- 实现一个数据湖表被多个引擎读写
- Catalog 和元数据一致性管理
🎯 总结:
精通数据湖 = 架构原理 + 格式机制 + 引擎集成 + 元数据管理 + 实战经验