生而为人

程序员的自我修养

0%

[toc]

实时数仓 vs 离线数仓 最全对比 + 面试背诵版

一、核心一句话区别

离线数仓:T+1 / 小时级,批量调度、跑历史数据,用于报表、复盘、画像;

实时数仓:秒 / 分钟级,CDC 增量流式处理,用于大屏、实时指标、实时风控。

二、整体架构对比

离线数仓

  • 数据源:MySQL 定时全量 / 增量、日志归档
  • 采集工具:DataX、Sqoop、定时调度
  • 计算引擎:Hive、Spark
  • 存储:HDFS、Hive、Hudi
  • 调度:Airflow、Azkaban、DataWorks
  • 延迟:小时级 / T+1

实时数仓

  • 数据源:MySQL Binlog、实时业务日志
  • 采集工具:Flink CDC、Canal
  • 缓冲:Kafka
  • 计算引擎:Flink
  • 存储:Doris、ClickHouse、Hudi、Paimon
  • 延迟:秒级~分钟级

三、分层对比(都用 ODS/DWD/DWS/ADS)

离线数仓分层

  • ODS:定时批量导入全量 / 增量
  • DWD:Spark/Hive 清洗明细
  • DWS:离线聚合宽表
  • ADS:离线报表、用户标签

实时数仓分层

  • ODS:CDC 实时增量进 Kafka
  • DWD:Flink 实时清洗、维度关联
  • DWS:Flink 窗口实时聚合
  • ADS:Doris/ClickHouse 对外实时查询

四、关键维度对比表(直接背)

维度 离线数仓 实时数仓
延迟 小时级、T+1 秒 / 分钟级
数据方式 批量全量 / 定时增量 CDC 实时增量
核心引擎 Hive、Spark Flink、Kafka
存储介质 HDFS、Hive Kafka、Doris、ClickHouse
数据新鲜度
计算模式 批处理 流处理
资源开销 低、夜间调度 常驻集群、资源一直占用
业务场景 日报、月报、复盘、画像、离线 BI 实时大屏、实时风控、实时订单、实时推荐
数据精度 高、可反复重跑修正 准实时、轻微迟到容忍
运维难度 简单、成熟 稍复杂、要调优状态 / 反压 / 倾斜

五、开发方式区别

离线

写 Hive/Spark SQL,定时调度,跑批、重跑方便,逻辑简单稳定。

实时

Flink SQL + CDC + Kafka,要考虑:

水位线、迟到数据、状态管理、数据倾斜、反压、Exactly-Once、幂等去重。

六、优缺点总结

离线数仓优点

  • 技术成熟、稳定、易运维
  • 可反复重跑、数据精准
  • 资源利用率高,夜间跑批不抢占白天业务

离线缺点

  • 数据延迟大,不能实时看业务

实时数仓优点

  • 数据秒级新鲜,支撑实时决策
  • 增量 CDC 同步,不用全量拉表
  • 流式处理,适合高并发流量

实时缺点

  • 引擎复杂、调优成本高
  • 常驻任务,资源占用多
  • 要处理乱序、迟到、状态膨胀等问题

七、面试标准口述(直接背)

离线数仓以 Hive+Spark 为核心,采用定时批量抽取、T+1 或小时级调度,适合日报月报、用户画像、业务复盘,数据精准可重跑;

实时数仓基于 Flink+Kafka+CDC 架构,通过监听 MySQL Binlog 做增量同步,秒级延迟,分层实时加工,落地到 Doris/ClickHouse,支撑实时大屏、风控、订单实时指标;

现在企业主流都是离线 + 实时双仓架构,实时看当下、离线做复盘和校准。

八、双仓统一趋势(湖仓一体)

Hudi/Paimon 做数据湖,一套数据支持:

  • Flink 实时消费

  • Spark 离线分析

    实现 流批一体、实时离线统一。