📘 Apache Hudi 进阶实战学习目录
第一阶段:核心原理与架构(筑基)
*目标:理解 Hudi 的设计哲学,掌握核心概念,能搭建基础表并进行读写。*
1. 表类型核心机制
- Copy On Write (COW) 模型
- 写入流程与重写机制
- 适用场景与读性能优势
- Merge On Read (MOR) 模型
- Base File 与 Log File 的协作
- 读时合并与写时压缩
- 场景选择:如何在 latency 与 throughput 间权衡
- Primary Key 与 Partition 的关系
- RecordKey 的设计原则(唯一性 vs 分布性)
- 分区策略对查询性能的影响
2. 索引机制详解
- Bloom Filter Index (布隆索引)
- 原理与 FPP (误判率) 调优
- 为什么它是默认且最通用的选择
- HBase Index
- 外部索引的原理与适用场景
- 维护成本与性能极限
- Bucket Index (桶索引)
- Hash 分桶机制
- 解决超大表索引性能瓶颈的关键
- Simple Index vs Bloom Filter Index 的性能对比
3. 时间旅行与增量查询
- Timeline (时间线) 深度解析
- Instant 的状态流转:Requested -> Inflight -> Completed
- 常见的 Action 类型:Commit, Delta_Commit, Clean, Compaction
- Time Travel (时间旅行)
- 如何查询历史快照
- 闪回与数据回滚机制
- 增量查询
- 流批一体架构基石
- 如何读取"某个时间点之后"变更的数据
4. CDC 与 Schema Evolution
- Change Data Capture (变更数据捕获)
- Upsert 语义下的 Insert/Update/Delete 处理
- 配合 Flink CDC 实现实时入湖
- Schema Evolution (模式演进)
- 列的增加、删除与修改类型
- Avro Schema 兼容性原则
5. 表服务
- Compaction (压缩服务)
- Log 文件合并策略
- 同步 vs 异步执行模式
- Clustering (聚类服务)
- 数据布局优化与线性化
- 小文件合并与排序
- Cleaning (清理服务)
- 旧版本文件的回收策略
- 如何防止存储无限膨胀
6. 元数据表
- Metadata Table (MDT) 架构
- 解决文件列表读取的性能瓶颈
- MDT 自身的维护与同步机制
7. 文件布局与存储
- FileGroup 与 FileSlice
- Hudi 数据的物理组织形式
- 小文件治理
- 写入过程中的自动大小控制
- 读写性能与文件大小的平衡
第二阶段:性能优化与调优(进阶)
*目标:突破性能瓶颈,在生产环境中实现高吞吐写入和低延迟查询。*
1. 写入性能调优
- 并行度与资源分配
hoodie.insert.shuffle.parallelism与hoodie.upsert.shuffle.parallelism- 如何根据数据量调整 Spark Executor/内存
- 写入路径优化
- Bulk Insert vs Upsert 的选择
- 排序写入带来的压缩比与查询提升
- 索引性能调优
- Bloom Filter 大小与 FPP 的权衡
- 针对数据倾斜的索引策略调整
2. 查询性能调优
- 查询加速技巧
- 利用 Data Skipping (分区/列统计)
- 向量化读取的配置与限制
- MOR 表的读优化
- Read Optimized View vs Realtime View
- 如何平衡实时性延迟与查询吞吐
- 增量查询优化
- 增量拉取的性能瓶颈与解决方案
3. 高级数据布局优化
- Clustering 策略深度
- Linearization (线性化) 策略
- Z-Order 与 Hilbert 空间填充曲线的应用(未来趋势)
- 文件大小与数量治理
- 目标文件大小 TargetFileSize 的设定
- 小文件合并对元数据的减负效果
第三阶段:运维治理与架构(高阶)
*目标:保障数据湖的长期稳定运行,处理故障,优化成本。*
1. 表治理与维护
- 生命周期管理
- TTL (Time To Live) 配置
- 分区级的冷热数据分层
- Orphan Files 清理
- 清理因任务失败留下的残留文件
- 备份与恢复
- Savepoint 机制详解
- 跨集群/跨云存储的表迁移指南
2. 可靠性与一致性
- 并发控制
- Spark/Flink 写入并发冲突解决
- 乐观锁并发控制 (OCC) 机制
- 故障恢复
- 写入失败后的 Rollback 机制
- 如何修复损坏的 Timeline
- 数据一致性保证
- 如何保证"精确一次"语义
- 重复数据的处理与去重策略
3. 监控与告警
- 核心监控指标
- Write Amplification (写放大)
- Compaction Lag (积压情况)
- Query Latency (查询延迟)
- 工具集成
- Prometheus + Grafana 监控大盘搭建
- 基于日志的异常诊断
4. 生产环境架构设计
- 存算分离架构
- 在对象存储 (S3/HDFS) 上的最佳实践
- 计算集群 (EMR/Databricks) 的弹性伸缩
- 湖仓一体架构
- Hudi + Hive/Iceberg/Doris 的联邦查询
- 多引擎读写的一致性挑战
- 成本优化
- 压缩算法选择
- 减少小文件带来的 API 调用成本 (云上)