streaming-lakehouse · git:20260920.a4843f5 · 2026-09-20 · sha256 4a4082cb434ed10b
streaming-lakehouse git:20260920.a4843f5A
Immutable. This exact content is served forever at /api/v1/blob/4a4082cb434ed10b.
--- name: streaming-lakehouse description: 实时与湖仓深挖:开放表格式、CDC、流处理状态与一致性、批流一体、数据新鲜度、成本。 keywords: [湖仓, lakehouse, iceberg, delta, hudi, 表格式, cdc, debezium, flink, 流处理, exactly once, 批流一体, 数据新鲜度, kafka, trino, 存储格式, parquet, 成本优化] layer: detail domains: [data-engineering] --- ## 面试官在意什么 这本是数据工程往实时与湖仓方向的深挖。2026 年的面试重点:表格式(Iceberg 一类)为什么成了标准、解决了什么(ACID、schema 演进、时间旅行、跨引擎);CDC 到湖的链路怎么保证一致;流处理的状态、水位、exactly-once 到底靠什么;批流一体是真统一还是两套代码;AI 场景要多新鲜的数据、代价多大。面试官追的是一次数据不一致或延迟事故的归因。 ## 项目 / 实习怎么深挖 简历上出现下面这类经历时从哪里切、追什么。追到候选人能说出机制、数字的来源与一次真实的故障或取舍才算实;只有框架名与结论、说不出自己那一段的,记为危险信号。通用的追问方法见 project-deep-dive。 - 简历出现 Iceberg / Delta / Hudi → 追为什么选它、schema 演进与时间旅行用过没有、小文件与 compaction 怎么治、跨引擎读写有没有问题 - 简历出现 CDC → 追工具与链路、初始快照与增量怎么衔接、乱序与重复怎么处理、延迟多少 - 简历出现 Flink / 流处理 → 追状态大小、checkpoint 间隔、水位怎么定、exactly-once 靠什么、反压怎么排查 - 简历出现批流一体 → 追是一套代码还是两套、口径怎么对齐、修数怎么做 - 简历出现"实时" → 追端到端延迟数字、新鲜度 SLA 谁定、超了怎么办 - 简历出现湖仓成本 → 追存储与计算各多少、小文件、分区与排序对查询的影响 ## 常见失守与危险信号 - 实时链路与流处理:说不出水位与事件时间;exactly-once 只会说"Flink 支持";反压不知道怎么看 - 存储格式与湖仓:不知道列式格式为什么快;表格式只答"就是元数据";小文件问题没处理过 - 成本与性能优化:只会加机器;不知道分区与排序对扫描量的影响 - 开放表格式:说不出快照与元数据层的结构;schema 演进没用过;compaction 拍脑袋 - CDC 链路:初始快照与增量衔接说不清;乱序与重复没处理;延迟没数字 - 流处理状态与一致性:状态放哪、多大不知道;checkpoint 失败没处理过;端到端一致性说不清 - 批流一体:两套代码口径对不上;修数靠人肉 - 数据新鲜度与 AI 场景:不知道下游要多新鲜;新鲜度没有 SLA 与监控 ## 常考主题清单 只列名字、阶梯与答实的标志,作"问到哪一层算实"的参考;问哪些、问几道由这份 JD 与这份简历定,不是配额。 ### 实时链路与流处理 - 阶梯:实时和离线各自解决什么,Lambda 与 Kappa 差异 → Flink 的 checkpoint、状态、watermark 分别做什么 → 实时指标与离线对不上、迟到数据、乱序、状态膨胀怎么处理 → 端到端 exactly-once 的代价,什么场景 at-least-once + 幂等就够 - 答实的标志:能列出差异来源(迟到、去重口径、维表更新时机、时区);理解状态 TTL;知道下游 sink 的幂等或事务写入才是端到端一致的关键 ### 存储格式与湖仓 - 阶梯:Parquet/ORC 为什么适合分析 → 列式存储、压缩、谓词下推的原理 → 湖仓表(Iceberg/Hudi/Paimon)解决 Hive 表哪些痛点(ACID、schema 演进、小文件、时间旅行)→ 从 Hive 迁到湖仓的收益、成本与风险 - 答实的标志:理解快照、元数据文件与小文件治理的关系;schema 演进对下游影响;流式 upsert 场景的适配性 ### 成本与性能优化 - 阶梯:数据平台成本花在哪(存储、计算、调度空转)→ 冷热分层、生命周期、压缩、任务合并各省什么 → 集群账单月涨 40% 怎么归因到具体任务和负责人 → 降本与 SLA、开发效率的冲突怎么协调 - 答实的标志:按任务/表归因成本;识别无人访问的表与重复计算;生命周期策略;把降本量化并跟踪 ### 开放表格式 - 阶梯:为什么在对象存储上还要一层表格式 → 快照、元数据文件、manifest 的结构;ACID、schema 演进、分区演进、时间旅行各怎么实现 → 小文件与 compaction、并发写冲突、跨引擎读写一致性怎么处理 → Iceberg / Delta / Hudi 的差别与选型;目录服务的作用 - 答实的标志:能画出快照与元数据的层次;有 compaction 策略与数字;知道并发写冲突怎么解 ### CDC 链路 - 阶梯:CDC 解决什么、为什么优于定时全量 → 日志解析(binlog / WAL)、初始快照与增量的衔接、schema 变更怎么传 → 乱序、重复、删除事件怎么在下游处理;延迟怎么量 → 写湖的方式(追加、upsert、merge on read vs copy on write)与代价 - 答实的标志:初始快照与增量衔接有方案;乱序与重复有处理;知道 upsert 到湖的两种实现与取舍 ### 流处理状态与一致性 - 阶梯:事件时间、处理时间、水位各是什么,迟到数据怎么办 → 状态放哪、多大、checkpoint 与 savepoint 的差别 → exactly-once 到底靠什么(checkpoint + 两阶段提交 sink),哪些 sink 做不到 → 反压怎么排查(算子级指标);状态膨胀与 TTL - 答实的标志:能说出端到端一致性的组成;有 checkpoint 失败或反压的排查案例;知道状态 TTL ### 批流一体 - 阶梯:批与流为什么会口径不一致 → 一套逻辑两种执行(同一 SQL 跑批与流)能做到什么程度 → 修数(回刷)在流场景怎么做;lambda 与 kappa 的取舍 → 批流一体的真实成本;什么场景值得 - 答实的标志:知道口径不一致的来源;有修数方案;能说出统一与不统一的取舍 ### 数据新鲜度与 AI 场景 - 阶梯:下游(看板、特征、Agent、检索索引)各要多新鲜 → 新鲜度怎么定义与测量(端到端延迟、水位滞后)→ 新鲜度 SLA 超了怎么告警与降级;成本随新鲜度怎么涨 → 向量索引、特征平台对数据链路的新要求 - 答实的标志:有新鲜度数字与 SLA;知道成本曲线;能说出 AI 下游对链路的具体要求