岗位能力与进阶
用法建议:先用能力矩阵自查短板,再对照 JD 解读校准目标公司的侧重点,面试题用于组织自己的答案结构,90 天计划则是从零到面试Ready的执行路径。本页所有章节链接均指向本站对应页面——面试前最后一轮复习,按链接回读即可。
能力模型 JD 解读 信创适配 面试准备 先修:全站十章
架构师能力模型
能力模型对齐 总体架构 的六层参考架构:底座四层(存储、计算、查询、集成)要求精通——能讲原理、能做选型、能落地规范、能救火;平台两层(调度资源、可观测)要求熟练——能用好、能定位问题,不必逐行排查内核。
| 技术栈层级 | 掌握程度 | 关键能力点 | 对应章节 |
|---|---|---|---|
| 存储与表格式 | 精通 | 对象存储与 Parquet 文件布局;Iceberg / Hudi / Delta 三家对比;分区与聚簇设计;快照、Schema 与分区演进;COW 与 MOR 写入路径 | 存储层 |
| 计算引擎 | 精通 | Spark 批处理与 shuffle 调优;Flink 流处理、Checkpoint 与状态管理;批流一体的表级落地;作业级资源画像 | 计算层 |
| 查询引擎 | 精通 | Trino 联邦与缓存机制;Doris / ClickHouse 建模、索引与物化视图;并发隔离与队列治理;查询加速三板斧 | 查询层 |
| 数据集成 | 精通 | Flink CDC 链路;多源入湖规范;Schema 演进与断点续传;质量前置校验;Exactly-Once 语义 | 数据集成 |
| 调度与资源 | 熟练 | DolphinScheduler / Airflow DAG 编排与补数重跑;YARN / K8s 队列配额与弹性;多租户资源隔离策略 | 调度资源 |
| 可观测性 | 熟练 | 小文件 / Compaction / 查询延迟指标体系;Prometheus + Grafana 大盘;告警分级与值班闭环;容量水位监控 | 可观测 |
六层之上还有三块横向放大器:数据治理(规范、质量、权限、生命周期——架构师的「立法权」)、性能调优(小文件、Compaction、查询与资源调优——架构师的「救火权」)、场景实战(本体、RAG、时序、时空、图——架构师的「变现权」)。六层决定你能不能干,三块决定你干得是否出彩。
架构师与高级开发的差异
差异可以拆成四点:时间尺度(迭代周 vs 演进年,架构师要为三年后的成本负责);评价对象(代码 vs 决策,架构师的核心产出是决策记录 ADR 与规范);影响半径(团队 vs 组织,靠规范与评审放大杠杆);知识形态(实现细节 vs 权衡结论,后者必须能讲清「当时有什么约束、放弃了什么」)。
JD 逐条解读
下面是一条市场典型的「数据湖仓一体架构师」JD,六条职责逐条拆解。读法:每条先看考察点(面试官真正想听什么),再看对应章节(回读哪页准备答案)。
职责一:负责数据湖仓一体平台的整体架构设计与持续迭代
考察点:能不能画出六层架构图并讲清每层的职责、边界与数据流向;「持续迭代」考的是演进式架构思维——每季度评审一次技术雷达,哪些组件升级、哪些降级、哪些引入、哪些下线。
职责二:负责技术选型与数据分层、存储规范、冷热策略、版本治理
考察点:三层意思——分层(ODS / DWD / DWS / ADS 各层职责与粒度约定);存储规范(命名、分区、文件大小、表格式版本,如 format-version=2 与 target-file-size 的平台默认值);冷热策略(介质分层 + TTL + 生命周期任务);版本治理(Schema 演进流程、表属性变更评审、快照过期策略)。这条考「平台立法能力」。
对应章节:总体架构(选型方法论)、存储层(表格式与分区规范)、数据治理(版本与生命周期)。
职责三:基于 Iceberg / ClickHouse / Doris 构建统一存储底座,支撑本体建模、数据流水线、AI 检索与时空分析
考察点:三引擎的分工是否清晰(Iceberg 做事实源、ClickHouse 做时序热层、Doris 做高并发多维分析);更关键的是「支撑上层场景」——本体建模(实体/关系表设计)、数据流水线(CDC + 调度)、AI 检索(原文向量同库)、时空分析(网格分区)。这条是区分「平台运维」与「架构师」的分水岭。
职责四:负责性能调优——小文件治理、Compaction 调度、查询加速与资源隔离
考察点:写入端(文件大小、并行度、提交频率)、存储端(Compaction 与快照过期)、查询端(分区裁剪、缓存、物化视图)三板斧是否成体系;资源隔离(队列拆分、大作业隔离、抢占策略)能否给出量化指标(文件数阈值、队列水位)。
职责五:制定入湖规范,建设数据质量、权限、生命周期与灾备体系
考察点:治理四件套的落地——入湖规范(各模态格式/分区/质量规则,见场景实战的统一规范表);质量分层(入湖前校验、加工中断言、出库前核验);权限(Ranger 行列级 + Catalog 级联);生命周期与灾备(TTL、快照保留、RTO/RPO 与演练制度)。
对应章节:数据集成(入湖规范与质量前置)、数据治理、可观测。
职责六:支撑上层业务场景——报表、风控、AI 与检索
考察点:架构师懂不懂业务消费模式:报表要口径统一与高并发,风控要多源融合与图研判,AI 与检索要原文向量同库与权限过滤。场景决定底座形态,「只谈组件不谈场景」的候选人会被判为纸面架构师。
信创国产化适配
信创(信息技术应用创新)环境下,大量政企项目的数据库要求替换为国产产品。好消息是:湖仓架构师手里的底座本来就是开放的——只要在 DB 与应用之间保留一层适配抽象,PostgreSQL 系国产数据库就可以平滑换入。先认识三个主流 PG 系国产库:
| 产品 | 出品方 | 技术路线 | 架构师关注点 |
|---|---|---|---|
| openGauss | 华为开源 | 源自 PostgreSQL 内核深度增强:MOT 内存引擎、Ustore 存储引擎、AI 自调优等 | 金融政企落地多;内核与社区 PG 存在代际差异,扩展兼容需逐项验证 |
| KingbaseES | 人大金仓 | PG 内核 + Oracle 兼容模式,面向政企迁移场景 | 从 Oracle 迁移项目的常客;兼容模式≠100%,SQL 改写量要提前评估 |
| PolarDB | 阿里云 | 云原生:计算存储分离、一写多读,提供 PG 兼容形态 | 适合云上湖仓的元数据与业务库;弹性与成本模型与传统部署不同 |
PG 在湖仓中的三类角色
- 元数据库:Hive Metastore 后端库、Iceberg JDBC Catalog、调度 / 质量 / 血缘组件的元存储。天然要求高可用(主备)与定期备份——它挂了整个湖仓的元数据入口就挂了。
- 业务库:中小型事务业务与报表出口,同时是湖仓 CDC 的源头库之一(Flink CDC 从 PG 直达 Iceberg,见 数据集成)。
- PostGIS 时空库:空间数据在线服务层(围栏判定、周边查询,见 场景实战 的 GIS 章节);叠加 pgvector 后还能承担 RAG 检索投影——一库三用,是中小团队成本最优雅的 PG 用法。
适配层设计
# catalog 抽象(配置示意):业务与作业只引用逻辑名,底层实现通过配置注入、可整体替换
catalogs:
lakehouse-meta: # 逻辑名 1:湖仓元数据库
driver: org.postgresql.Driver # 切换 openGauss 时改为 org.opengauss.Driver
url: jdbc:postgresql://meta-node:5432/metastore
validation: SELECT 1
business-erp: # 逻辑名 2:业务库(CDC 源 / 报表出口)
driver: org.postgresql.Driver # 切换 KingbaseES 时改为 com.kingbase8.Driver
url: jdbc:postgresql://biz-node:5432/erp
// 驱动替换:业务代码只面向 java.sql.* 标准接口与逻辑 catalog
String driver = cfg.get("catalogs.business-erp.driver"); // org.postgresql.Driver -> com.kingbase8.Driver
String url = cfg.get("catalogs.business-erp.url"); // jdbc:postgresql://... -> jdbc:kingbase8://...
Class.forName(driver);
try (Connection conn = DriverManager.getConnection(url, user, pwd)) {
// 业务逻辑不感知底层数据库品牌
}
-- 方言改写示例 1:upsert —— MySQL 私有语法改写为 PG 系通用写法
-- 迁移前(MySQL)
INSERT INTO biz.customer_rank(customer_id, rank_level)
VALUES (1001, 'VIP')
ON DUPLICATE KEY UPDATE rank_level = 'VIP';
-- 迁移后(PG 系通用)
INSERT INTO biz.customer_rank(customer_id, rank_level)
VALUES (1001, 'VIP')
ON CONFLICT (customer_id) DO UPDATE SET rank_level = EXCLUDED.rank_level;
-- 方言改写示例 2:标识符 —— 反引号统一为“小写 + 不加引号”,规避大小写敏感差异
SELECT `user_id`, `order_amount` FROM `biz`.`orders`; -- 迁移前
SELECT user_id, order_amount FROM biz.orders; -- 迁移后:写入平台 SQL 规范并纳入评审
AI+湖仓融合
AI 是湖仓架构的下一跳,也是架构师简历差异化的最大机会。融合底座正在沿三个方向演进:
统一元数据
表、指标、模型、向量索引、血缘在同一个 Catalog 登记:数据资产与 AI 资产一体治理——「这张知识表被哪个 RAG 应用消费」与「哪张表被哪个报表消费」用同一套血缘回答。
数据治理 →学习路径建议
- 先掌握场景:把 场景实战 五类场景过一遍——先知道底座「怎么被 AI 消费」,再谈融合;
- 再学向量索引原理:HNSW 的图构建与搜索、IVF 系列的聚簇与重排、召回率-延迟-内存三角的量化评测方法;
- 动手搭 RAG over Lakehouse:pgvector 检索投影 + Iceberg 原文表 + 权限过滤 + 引用溯源,端到端跑通并建立评测集;
- 再看语义层与 ChatBI:把指标口径治理与 AI 消费连起来,理解「语义层是 AI 取数的防幻觉地基」。
高频面试题
8 道湖仓架构师岗位的高频题。每题给的是答题思路——面试官要的是结构化思维与场景绑定的结论,不是背诵的标准答案。
问题一:为什么选 Iceberg,而不是 Hudi / Delta Lake?
- 先立评价框架:元数据扩展性(快照/清单文件规模)、分区与 Schema 演进、多引擎中立性、更新模型(COW/MOR/upsert)、生态与社区;
- 再绑定自家场景给结论:数据规模大 + 引擎多元(Spark/Flink/Trino/Doris 共读)+ 需要隐藏分区与分区演进 → Iceberg;记录级高频 upsert 与增量流式消费为主 → Hudi;深度绑定 Databricks 生态 → Delta 顺理成章;
- 加分项:提到 v2 delete 文件与 MERGE INTO 路径、bucket 分区对 join/shuffle 的优化、REST Catalog 的多云演进。
问题二:小文件问题如何治理?
- 按层答:成因(高频流式提交、分区过细)→ 写入端(target-file-size、提交频率与并行度对齐)→ 存储端(rewrite_data_files 定期 Compaction、COW/MOR 的读放大权衡)→ 治理端(文件数与平均大小监控、快照过期 expire_snapshots);
- 量化:给出平台阈值——例如「单分区数据文件数超过阈值」触发自动合并告警;
- 兜底:把小文件治理做成平台自动运维(调度系统定期执行),而不是等故障后人肉救火。
问题三:批流一体怎么落地?
- 三层统一:存储统一(同一张 Iceberg 表,快照隔离解决并发读写)→ 计算统一(Flink 流批一体或 Spark Structured Streaming)→ 语义统一(事件时间、水位线、回溯重放);
- 落地路径:从 Lambda 起步平滑演进,两套口径用统一校验任务对齐,条件成熟再收编为流主链路;
- 避坑:批流一体≠强行一套代码,先统一「表」与「口径」,再谈统一「作业」。
问题四:Exactly-Once 端到端如何保证?
- 链路分段作答:源端可重放(Kafka offset / CDC 位点)→ 计算端两阶段提交(Flink Checkpoint + 事务性 Sink)→ 写入端幂等(Iceberg 主键 MERGE INTO,或提交 ID 去重)→ 下游消费幂等;
- 核心口径:端到端 Exactly-Once = 每一段要么事务、要么幂等,缺一段则整体退化为 At-Least-Once;
- 加分项:主动谈故障重放演练——幂等性是「设计出来的」,也要「演练验证过的」。
问题五:Trino / Doris / ClickHouse 怎么选?
- 场景优先而非产品排名:多源联邦 + 中等并发交互分析 → Trino;高并发固定多维报表、需要 Join 与实时更新 → Doris;大宽表扫描、监控时序、超高写入吞吐 → ClickHouse;
- 底座视角:三者都通过统一 Catalog 共享湖仓数据,底座不搬家,引擎可替换、可并存;
- 加分项:给出「同一份数据两种引擎各自建模压测」的决策依据,而不是「我觉得 X 快」。
问题六:Compaction 调度策略怎么设计?
- 触发条件:指标驱动(文件数/平均大小/读放大)+ 时间兜底(每日低峰强制),双保险;
- 策略分层:数据合并(rewrite_data_files)、快照过期(expire_snapshots)、孤儿文件清理(remove_orphan_files)三类作业分离调度,避免互相放大资源占用;
- 资源纪律:独立队列 + 并发上限 + 避开查询高峰;Compaction 积压量纳入监控告警;与写入端(Flink Checkpoint 周期)联动考虑提交频率。
问题七:容量规划怎么做?
- 方法先行:数据量推算(日增 × 保留期 × 副本/纠删码 × 压缩比,冷热分层后分别估算)→ 元数据规模(文件数与快照数对 Catalog 的压力)→ 计算资源(按作业画像估 CPU 小时/内存/队列水位)→ 增长与峰值(年增长、大促/月末);
- 降本三件套:生命周期管理、压缩与编码优化、弹性伸缩——容量规划永远是「先压测量、再加系数」,不做拍脑袋预算;
- 加分项:给出你监控水位的具体指标(对象存储用量增速、队列利用率、Compaction 积压)。
问题八:灾备方案怎么设计?
- 指标先行:按业务分级定义 RTO/RPO(平台级 vs 表级),不同等级不同投入;
- 湖仓特有逻辑:存储层(对象存储多副本/纠删码、跨区复制或双活)+ 元数据层(Catalog 库主备 + 定期导出快照/清单文件备份)+ 链路层(Kafka 双机房镜像、源端可重放窗口);
- 计算层哲学:湖仓的作业无状态、可重放——灾备重点收敛到「存储 + 元数据」两件事;
- 收尾必谈演练:每季度真实切换演练 + 核对行数/校验和,没演练过的灾备方案默认不可用。
90 天学习计划
三阶段 12 周:第 1 月夯底座(存储 + 计算),第 2 月通链路(查询 + 集成 + 调度 + 可观测),第 3 月上价值(治理 + 调优 + 场景实战)。每周主题对应本站章节,每周产出物是一个可运行、可复现的实践项目。
| 阶段 | 周次 | 主题与要点 | 对应章节 | 实践项目建议 |
|---|---|---|---|---|
| 第 1 月 底座 |
W1 | 总体架构与六层参考架构,建立全局地图 | 总体架构 | 画出自家系统的六层映射图,标注每层组件与最短板 |
| W2 | 对象存储与 Parquet:行组、列裁剪、压缩与编码 | 存储层 | MinIO 搭 S3 兼容存储;对比 Parquet 行组大小对扫描量的影响 | |
| W3 | Iceberg 深潜:分区/快照/回滚/MERGE INTO 与演进 | 存储层 | 建表并完整演练一次分区演进 + 快照回滚 + 过期清理 | |
| W4 | 计算引擎:Spark 批与 Flink 流写同一张表 | 计算层 | Spark 批写 + Flink 流式 upsert 同一张 Iceberg 表,验证快照隔离并发 | |
| 第 2 月 链路 |
W5 | Trino 联邦查询:catalog 配置、执行计划与缓存 | 查询层 | Trino 挂 Iceberg catalog,跑跨源 Join 并 EXPLAIN 分析裁剪效果 |
| W6 | Doris 与 ClickHouse:建模、索引与物化视图 | 查询层 | 两种引擎对同一份数据分别建模,压测并发与扫描对比 | |
| W7 | 数据集成:Flink CDC、Schema 演进、Exactly-Once | 数据集成 | PG → Iceberg 的 CDC 链路,演练断点续传与表结构变更 | |
| W8 | 调度与可观测:DAG 编排、队列配额、监控大盘 | 调度资源 · 可观测 | DolphinScheduler 编排全链路 DAG + Grafana 搭平台监控大盘 | |
| 第 3 月 价值 |
W9 | 数据治理:入湖规范、质量规则、权限与生命周期 | 数据治理 | 为 W7 链路补齐质量校验任务、Ranger 权限矩阵与 TTL 策略 |
| W10 | 性能调优:小文件、Compaction、查询加速、资源隔离 | 性能调优 | 故意制造小文件与读放大,完整治理一遍并记录前后指标 | |
| W11 | 场景实战:本体 / RAG / 时序 / 时空 / 图任选其一 | 场景实战 | 推荐 RAG:pgvector + Iceberg 原文 + 权限过滤端到端跑通 | |
| W12 | 综合复盘:作品集整理 + 面试题闭环 | 岗位进阶 | 复盘 12 周产出物,整理作品集并写下 8 道高频题的个人答案 |