数据岗位面试题更新 2026-08-05

请描述在 Apache Hudi 数据湖框架中,如何利用 Kafka 作为数据源、Flink 作为处理引擎,完成实时数据的写入(upsert)与读取(查询)的整个流程?

数据系统设计技术原理Apache Hudi

考察说明

考察候选人对 Hudi 结合 Kafka 与 Flink 实现实时数据入湖和读取的架构理解与实操能力。

回答思路

  1. 【回答框架 1】整体架构通常为 Kafka → Flink → Hudi,Flink 通过 Kafka Connector 以流模式消费 topic 数据,再通过 Hudi Flink 写入端将数据以 Upsert 方式写入 Hudi 表。Hudi 支持 Copy-on-Write 和 Merge-on-Read 两种表类型,实时写入常用 MOR 以平衡写入延迟与查询性能。
  2. 【回答框架 2】Hudi 通过记录键(record key)和预组合逻辑实现 upsert,Flink 流中的每条记录包含主键及数据字段,写入时根据主键定位文件组,更新或插入数据。Flink 端需要配置 Hudi 表的 schema、表名、路径以及写入选项,如操作类型(insert/upsert)、同步元数据等。
  3. 【回答框架 3】读取方面,Hudi 提供增量查询(incremental query)能力,可通过 Flink 或 Spark 读取。Flink 可以通过 Hudi Source 以流模式消费 Hudi 表的新增变更数据(基于 commit 时间或文件组),实现实时读取。也可配置 Hive 同步,通过 Hive 表查询 Hudi 数据。
  4. 【回答框架 4】关键配置包括 Kafka 的 bootstrap servers、消费组、反序列化器,Flink 的 checkpoint 机制(用于精确一次处理),以及 Hudi 的写入并发、文件大小等参数。实时性受 checkpoint 间隔和 Hudi 提交频率影响。
  5. 【回答框架 5】实际部署中,需注意 Hudi 表的小文件问题,通过 clustering 和 compaction(MOR 表)控制;同时需要考虑 Kafka 消费 lag 监控和 Flink 背压处理,以维持端到端延迟。
  6. 【关键点 1】Flink 通过 Kafka Connector 消费数据,使用 Hudi Flink 写入端执行 upsert。
  7. 【关键点 2】Hudi 记录键与预组合配置决定去重与更新行为。
  8. 【关键点 3】Hudi 提供增量读取能力,Flink 可流式消费 Hudi 变更。
  9. 【关键点 4】Checkpoint 与 Hudi 提交机制保证数据一致性。
  10. 【关键点 5】MOR 表需定期 compaction,以优化查询性能。
  11. 【易错点 1】将 Hudi 的 upsert 误认为能完全保证业务级幂等,实际需要业务唯一标识配合去重逻辑。
  12. 【易错点 2】默认配置下小文件问题严重,需合理设置文件大小并及时触发 clustering。
  13. 【易错点 3】流式读取 Hudi 的增量查询与实时写入存在时序问题,需依赖 commit 时间而非数据时间。