[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 离线分析
实现 流批一体、实时离线统一。