1、Hudi入门:Hudi是什么、Hudi的发展历史、Hudi的核心特性与优势、Hudi在Lakehouse架构中的定位
1.1 Hudi到底是什么?
先说说我个人的理解。Hudi,全称是Hadoop Upserts Deletes and Incrementals。说白了,它就是一个数据湖的事务存储层。
你想想看,传统数据湖有个大问题——文件一旦写进去,想改就难了。Hudi就是来解决这个痛点的。它让你能在HDFS或云存储上,像操作数据库一样做增删改查。
我在项目中遇到过不少团队,数据湖里存了几百TB的日志,但业务方突然说「昨天的数据要修正一下」。没有Hudi之前,只能全量重跑,耗时又烧钱。有了Hudi,直接upsert就搞定了。
一句话总结:Hudi = 数据湖 + 数据库的事务能力 + 流式增量消费。
1.2 发展历史:从Uber内部到Apache顶级项目
Hudi的故事挺有意思的。2016年,Uber为了解决大规模数据管道的更新问题,内部孵化了这个项目。我记得当时Uber的工程师们被一个场景折磨得不轻——打车订单的实时状态变更,既要写入HDFS做分析,又要保证数据能及时被下游消费。
2017年,Uber把Hudi开源了。2019年,它正式成为Apache顶级项目。这个速度在开源界算是相当快的。
为什么会这么快?因为需求太真实了。我2018年第一次接触Hudi时,社区还只有几十个贡献者。到了2021年,我参加Hudi meetup时,已经有一百多家公司在生产环境用了。
| 时间 | 里程碑 | 我的观察 |
|---|---|---|
| 2016 | Uber内部孵化 | 解决实时ETL痛点 |
| 2017 | 正式开源 | 社区反应热烈 |
| 2019 | Apache顶级项目 | 生态开始成熟 |
| 2020+ | 大规模生产验证 | 国内大厂纷纷落地 |
1.3 核心特性与优势
Hudi的核心能力,我归纳为四个字:增、删、改、查。但每个字背后都有门道。
1.3.1 ACID事务
Hudi提供了快照隔离级别的事务保证。这意味着你在读数据时,不会看到未提交的写入。嗯,这里要注意——它不像传统数据库那样支持跨分区事务,但在数据湖场景下,这个粒度已经够用了。
1.3.2 Upsert能力
这是Hudi的招牌功能。你可以基于主键,把新增和更新合并成一条操作。我在做用户画像项目时,每天几亿条用户行为数据,用Hudi的upsert,只更新变更的部分,存储成本直接降了60%。
1.3.3 增量查询
传统数据湖只能做全量扫描。Hudi支持按提交时间戳做增量拉取。这个特性对实时数仓太重要了——你不需要每次都全量读,只拿变化的数据就行。
1.3.4 两种表类型
- Copy on Write(COW):写时复制,适合读多写少的场景
- Merge on Read(MOR):读时合并,适合写多读少的场景
我个人的习惯是:日志类数据用MOR,维度表用COW。当然,具体选型要看你的业务。
避坑指南:我曾经在生产环境踩过一个坑——COW表频繁小批量写入,导致小文件爆炸。后来调整了写入策略,每5分钟攒一批再写,问题就解决了。
1.4 Hudi在Lakehouse架构中的定位
Lakehouse架构,说白了就是「数据湖+数据仓库」的融合。底层还是对象存储,但上层要提供仓库级的ACID和性能。
Hudi在这个架构里,扮演的是存储引擎层的角色。它不负责计算,也不负责查询,它只负责把数据管好。
我画了一张图,帮你理解Hudi在Lakehouse里的位置:
从这张图你能看到,Hudi处于中间层。它向上对接各种计算引擎,向下屏蔽存储细节。这种分层设计的好处是——你换存储后端,Hudi层不用动;你换查询引擎,Hudi层也不用动。
1.5 为什么选Hudi而不是其他方案?
市面上类似的方案还有Delta Lake和Iceberg。我三个都用过,说说我的感受:
| 特性 | Hudi | Delta Lake | Iceberg |
|---|---|---|---|
| Upsert性能 | ★★★★★ | ★★★★ | ★★★ |
| 增量查询 | 原生支持 | 需额外配置 | 需额外配置 |
| Flink集成 | 深度集成 | 一般 | 一般 |
| 生态成熟度 | 高 | 高 | 高 |
如果你主要做CDC入湖和增量ETL,Hudi是首选。我去年帮一家金融客户做实时数仓改造,从Iceberg切到Hudi后,upsert性能提升了3倍。
注意:没有银弹。Hudi的MOR表在查询时会有合并开销,如果你的查询延迟要求特别高,需要做预合并或调整compaction策略。
1.6 本章小结
Hudi不是一个「万能工具」,但它在数据湖的增量处理这个细分领域,确实做到了极致。我个人觉得,理解Hudi最好的方式就是动手跑一个demo。下一节我们会搭建环境,让你亲手感受一下Hudi的upsert到底有多快。
记住三个关键词:增量、事务、开放。这是Hudi的立身之本。