离线数仓 vs 实时数仓
问题
离线数仓和实时数仓有什么区别?Lambda 和 Kappa 架构是什么?
答案
离线数仓 vs 实时数仓
| 对比 | 离线数仓 | 实时数仓 |
|---|---|---|
| 数据延迟 | T+1(次日出数) | 秒级 ~ 分钟级 |
| 计算引擎 | Hive / Spark Batch | Flink / Spark Streaming |
| 存储 | HDFS / Hive | Kafka / ClickHouse / Doris |
| 调度方式 | 定时批量(Airflow) | 流式持续计算 |
| 适用场景 | 日报、月报、历史分析 | 实时监控、实时看板 |
| 成本 | 较低 | 较高 |
Lambda 架构
同时维护一套批处理链路和一套流处理链路:
| 优点 | 缺点 |
|---|---|
| 批处理保准确性 | 两套代码维护成本大 |
| 流处理保实时性 | 结果合并复杂 |
| 容错性好 | 数据一致性难保证 |
Kappa 架构
只保留流处理,取消批处理层:
| 优点 | 缺点 |
|---|---|
| 一套代码 | 需要消息队列长期存储 |
| 维护简单 | 复杂计算(如全量 JOIN)难做 |
| 逻辑统一 | 回放成本高 |
流批一体(趋势)
现代方案(如 Apache Flink + Iceberg/Hudi)可以用同一套代码同时支持流处理和批处理。
如何选择
| 需求 | 推荐架构 |
|---|---|
| 只有离线报表 | 纯离线数仓 |
| 部分实时指标 + 离线报表 | Lambda |
| 全量实时化 + 技术团队强 | Kappa |
| 新项目/现代技术栈 | 流批一体 |
常见面试问题
Q1: Lambda 和 Kappa 的核心区别?
答案:
- Lambda:批+流两条链路,批保证准确,流保证实时
- Kappa:只有流一条链路,需要重算就回放消息
- Lambda 更成熟但维护成本重,Kappa 更简洁但对消息系统要求高
Q2: 你们为什么要建实时数仓?
答案(回答思路):
- 业务需要实时看到数据(如大促监控、实时 GMV)
- 离线 T+1 已经无法满足运营决策需求
- 选择了 Flink + ClickHouse 的实时链路
- 实时层做核心指标,离线层做全量明细
Q3: 实时数仓的数据质量怎么保证?
答案:
- 上游:Kafka 消息 Schema 校验、幂等写入
- 中间:Flink Checkpoint 保证 Exactly-Once
- 下游:实时数仓 vs 离线数仓对数,发现差异及时修复
- 监控:核心指标设阈值告警
相关链接
- 分层架构 - 离线数仓的分层设计
- Flink - 实时计算引擎
- ETL 与数据管道:CDC - 实时数据同步