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

在 Apache Druid 中,数据摄取(ingestion)支持实时流式写入与离线批量导入两种模式,请说明这两种模式各自基于什么机制实现,并简述它们在工作原理上的主要差异。

数据技术原理Apache DruidApache Hadoop

考察说明

考察候选人对 Druid 数据摄取两种模式底层机制及其差异的理解。

回答思路

  1. 【回答框架 1】Druid 的实时摄取通过实时节点(或索引服务)监听 Kafka 等消息队列,将流式数据先写入内存中的不可变分段(Segment),并定期(如按 interval 或阈值)将完成的 Segment 持久化到深层存储,实现近实时可见。
  2. 【回答框架 2】批处理摄取通常使用 Hadoop 或原生批处理任务,将历史数据一次性或周期性生成 Segment 并直接写入深层存储,不经过实时缓冲层,适合批量导入或初始化数据。
  3. 【回答框架 3】两者的核心差异在于数据到达方式与 Segment 生成路径:实时摄取强调低延迟追加和持续提交,批处理强调高吞吐一次性处理;实时摄取可能产生部分未完成 Segment 的合并问题,批处理则更容易控制 Segment 的大小和数量。
  4. 【回答框架 4】在实际应用中,常将两者结合:实时摄取处理最近数据以保证时效,批处理填补历史数据或修正数据,最终由 Coordinator 统一管理 Segment 的生命周期和查询合并。
  5. 【关键点 1】实时摄取依赖消息队列和实时节点,数据先入内存 Segment 再落盘,实现秒级到分钟级可见。
  6. 【关键点 2】批处理通过 Hadoop 或原生任务直接生成 Segment 到深层存储,适合大批量历史数据导入。
  7. 【关键点 3】两种模式最终都生成统一的 Segment 模型,对查询透明,便于混合使用。
  8. 【易错点 1】实时和批处理共享 Segment 模型,但实时数据存在近实时延迟,不能声称完全实时。
  9. 【易错点 2】批处理作业需要关注 Segment 粒度和文件数量,避免小文件过多影响查询性能。
  10. 【易错点 3】混合架构中需协调好实时与批量数据的更新时间,防止重复或数据不一致。