第3章 实时数仓基础概念与架构面试
本章聚焦实时数仓从离线到实时演进的底层逻辑、Lambda与Kappa架构的核心差异,以及技术栈选型的关键考量。掌握这些内容,你将能够从容回答架构类面试题,并展示对实时治理场景的深度理解。
面试问答卡片
问题1:请简述实时数仓的演进历程。
- 面试官考察点
- 对实时数仓历史脉络的宏观理解;是否具备从离线到实时的演进思维。
- 回答框架
-
- 起点:传统离线数仓(T+1);
- 演进:Lambda架构(批+流两条链路);
- 简化:Kappa架构(纯流处理,统一管道);
- 当前:实时湖仓一体(Hudi/Iceberg + Flink)。
- 简短示例回答
- 实时数仓最初以离线T+1为主,后出现Lambda架构(批处理+流处理并行)。为降低维护成本,Kappa架构取消批链路,全部基于流处理。当前趋势是实时湖仓一体,用Flink写入Hudi/Iceberg,实现统一存储与近实时分析。
- 可能追问
-
- Lambda架构中的数据一致性如何保证?
- Kappa架构如何处理历史数据回溯?
- 避坑提醒
- 不要只罗列架构名称,要解释每种架构解决的核心痛点(如Lambda解决时效与历史,Kappa解决复杂度)。
问题2:请比较Lambda架构和Kappa架构。
- 面试官考察点
- 架构选型的分析能力;对批流融合、数据一致性的理解深度。
- 回答框架
-
- 数据通路:Lambda批+流两条线,Kappa只用流;
- 一致性:Lambda双链路需合并(最终一致),Kappa单链路易实现强一致;
- 复杂度:Lambda运维重(两套代码/存储),Kappa轻量;
- 场景:Lambda适合批流混合强历史回溯,Kappa适合纯实时低延迟。
- 简短示例回答
- Lambda架构维护批流两套代码,逻辑重复且易出现不一致;Kappa统一为流处理管道,简化运维。但Lambda在回溯历史数据时直接从批存储重跑,Kappa需调整时间窗口或重放Kafka数据。当前推荐Kappa+湖存储实现回溯。
- 可能追问
-
- Kappa架构如何支持Exactly-Once语义?
- 实际项目中你更倾向哪种?为什么?
- 避坑提醒
- 避免空谈理论,应结合业务实时性要求和数据量给出选择依据。不要忽视Lambda在生产中仍广泛存在的事实。
问题3:实时数仓技术栈选型时需考虑哪些因素?
- 面试官考察点
- 技术栈广度;对组件特性、社区成熟度、运维成本的综合判断。
- 回答框架
-
- 实时计算:Flink vs Spark Streaming(状态管理、反压机制);
- 消息队列:Kafka vs Pulsar(吞吐、延迟、分区扩展);
- 存储层:Hudi/Iceberg vs Delta Lake(Merge-on-Read、ACID);
- 查询引擎:ClickHouse vs StarRocks(点查、聚合、并发);
- 资源与运维:云原生(K8s) vs 自建集群。
- 简短示例回答
- 首选Flink作为流计算引擎,其状态后端和Checkpoint机制成熟;消息队列选Kafka(高吞吐低延迟);存储层推荐Hudi(增量拉取兼容性好);OLAP选ClickHouse(大宽表聚合性能优异)。若团队人力不足,可考虑全托管云服务。
- 可能追问
-
- Flink与Spark Streaming在实时数仓中的具体差异?
- ClickHouse更新删除性能差,如何解决?
- 避坑提醒
- 不要只列举组件名称,要说明选型依据(如反压、Exactly-Once、OLAP点查)。避免推荐“万能技术”,需强调业务场景驱动。
项目案例
| 字段 | 内容 |
|---|---|
| 项目名称 | 某大型电商实时数仓治理项目 |
| 业务背景 | 支撑大促期间实时看板(GMV、UV、退款率),要求秒级延迟,数据来源包括埋点、订单、物流等10+系统。 |
| 规模指标 | 每秒10万+事件;100+实时任务;每日处理200亿条记录;实时管道SLA 99.9% |
| 技术栈 | Flink 1.15 + Kafka 3.2 + Hudi 0.12 + ClickHouse 22.8 + Prometheus+Grafana |
| 核心难点 | ① 大促流量洪峰导致反压,延迟飙升;② 多流Join时状态膨胀Checkpoint超时;③ 数据倾斜(热门商品哈希分区不均匀) |
| 面试高频追问 | · 如何优化反压? · 状态膨胀如何治理? · 解决数据倾斜的常用方案? · Hudi增量拉取如何保证一致性? |
| 可迁移回答话术 | “针对反压,我们开启缓冲池、调整并行度,并利用Flink Web UI定位缓慢算子;对状态膨胀,采用增量Checkpoint和状态TTL;数据倾斜则通过二次聚合或随机前缀打散后聚合。这些治理手段可复用到其他类似场景。” |
💡 学习建议: 将项目案例中的难点和话术熟记,面试时快速定位到实际项目,展现问题分析与解决能力。