数据湖仓一体(Lakehouse)教程

本站面向「数据湖仓一体架构师」岗位能力模型,系统讲解湖仓一体的六层技术栈——存储与表格式、计算引擎、查询引擎、数据集成、调度与资源、可观测性——并延伸到数据治理、性能调优与高阶场景实战。跟着学完,你将具备从零设计、建设并稳定运维一套现代数据平台的完整知识体系。
全站示例约定:为保持口径一致,全站代码示例统一使用 catalog 名 lakehouse、仓库路径 s3://lakehouse/wh、日期分区字段 dt,业务背景以电商交易数据为主。替换为你自己环境的参数后即可直接实践。

为什么需要湖仓一体

过去十年,绝大多数企业同时供养着两套数据平台:一套是以 Oracle、Greenplum、Hive 数仓为代表的数据仓库,服务报表与经营分析;一套是以 HDFS 为核心的数据湖,堆积埋点日志与原始文件,供算法工程师自由探索。两套平台并行,看似分工明确,实则暗藏系统性痛点:

湖仓一体(Lakehouse)正是对这些问题的系统性回应:在廉价对象存储之上,用开放表格式(如 Iceberg)把数据库级别的事务、Schema 治理与并发控制能力「下沉」到存储层,让一份数据同时支撑报表、实时、AI 与检索等全部场景。三者对比如下:

对比维度 数据仓库 数据湖 湖仓一体
存储成本 商业按容量计费,昂贵 对象存储/HDFS,廉价 与湖同底,一份存储多引擎复用
数据时效 以 T+1 批处理为主 可接流,但缺治理约束 批流一体,分钟级入湖即可查
Schema 管理 写时模式,变更僵硬 读时模式,完全失控 受控演进:可校验、可回滚、可分支
数据治理 成熟但相对封闭 治理能力近乎为零 继承仓的治理:血缘、权限、质量
ACID 事务 支持 不支持 表格式级快照隔离与并发读写
适用场景 固定报表、经营分析 原始暂存、机器学习 BI + 实时 + ML + 检索全场景
一句话定位:湖仓一体 = 用数据湖的成本,拿到数据仓库的体验。它不是湖与仓的简单拼接,而是把「仓的能力」内建进「湖的底座」。

湖仓一体最迷人的特性是一份数据、多引擎共享:Spark、Flink、Trino 等引擎通过统一的元数据服务读写同一张表,数据不再来回搬运。下图与示例可以直观感受这一点:

Spark 批处理 Flink 流计算 Trino 交互查询 Iceberg 表 · lakehouse.dws_orders ACID 事务 · Schema 演进 · 隐藏分区 同一份存储与元数据,多个引擎并发读写,数据不再来回搬运
-- 同一张 Iceberg 表 lakehouse.dws_trade_city,三个引擎直接访问,数据零搬运

-- ① Trino:BI 看板即席查询,秒级返回(分析师视角)
SELECT city, SUM(pay_amount) AS gmv, COUNT(1) AS order_cnt
FROM lakehouse.dws_trade_city
WHERE dt BETWEEN '2026-10-30' AND '2026-11-04'
GROUP BY city
ORDER BY gmv DESC
LIMIT 20;

-- ② Spark:每日离线回刷,覆盖式重写分区(快照隔离,读写互不阻塞)
INSERT OVERWRITE lakehouse.dws_trade_city PARTITION (dt = '2026-11-04')
SELECT city, SUM(pay_amount) AS gmv, COUNT(1) AS order_cnt
FROM lakehouse.ods_trade_orders
WHERE dt = '2026-11-04'
GROUP BY city;

-- ③ Flink CDC:业务库变更实时 upsert 写入同一张表,分钟级可查
--    (动态表聚合后以 upsert 模式提交,需在建表时声明主键 dt + city)
INSERT INTO lakehouse.dws_trade_city
SELECT DATE_FORMAT(order_time, 'yyyy-MM-dd') AS dt,
       city, SUM(pay_amount) AS gmv, COUNT(1) AS order_cnt
FROM kafka_binlog_orders
GROUP BY DATE_FORMAT(order_time, 'yyyy-MM-dd'), city;
如何判断一个平台是不是真湖仓:看三个硬指标——① 元数据与数据文件是否开放解耦(换引擎不搬数据);② 是否具备表级 ACID 与并发读写快照隔离;③ 批与流是否写入同一张表、同一套 Schema。三者缺一,都只是「有湖的仓」或「有仓的湖」。
常见误区:把「数据扔进对象存储 + 起个 HDFS外表」当成湖仓一体。没有表格式层的事务与元数据管理,并发写入会互相覆盖,小文件会拖垮查询,Schema 漂移无人兜底——这不是架构升级,只是把仓库的文件搬了个家。

把上述痛点反过来,就是本教程要带你抵达的目标平台画像:一份存储承载全场景、一次入湖即可查、一套 Schema 贯穿批流、一套治理覆盖湖上湖下。后续每一章,都是在为这个画像补齐一块拼图:

技术栈全景

本站把湖仓一体拆解为六层技术栈,自下而上逐层展开。每一层独立成章,既可按学习路线顺序精读,也可作为速查手册按需检索。每一层中的核心组件如下:

存储与表格式层

HDFS S3 / MinIO Parquet Iceberg Hive Metastore

对象存储与开放表格式构成湖仓的单一可信底座,向上提供 ACID、Schema 演进与隐藏分区能力,是「换引擎不搬数据」的根本保证。

进入学习 →

计算引擎层

Spark Flink

批流一体的计算心脏:Spark 承接大规模离线加工与 ML 训练,Flink 承接实时计算与 CDC 流式入湖,二者共享同一套表格式。

进入学习 →

查询引擎层

Trino Doris ClickHouse

面向人与看板的交互式查询和 OLAP 引擎:Trino 联邦查询、Doris 实时多维分析、ClickHouse 日志时序,秒级返回即席结果。

进入学习 →

数据集成层

Kafka Flink CDC DataX SeaTunnel

把业务数据库与日志流的增量数据实时、可靠地送入湖仓,是数据「活起来」的入口;批量同步与流式入湖双轨并行。

进入学习 →

调度与资源层

DolphinScheduler YARN

用 DAG 编排上千个离线与实时任务,用 YARN 统一管控计算资源、多租户队列与配额,让平台从「能跑」走向「跑得稳」。

进入学习 →

可观测性层

Prometheus Grafana EFK

指标、日志、链路三位一体:让慢查询、任务失败、小文件堆积等问题在业务方感知之前被发现、告警与定位。

进入学习 →
阅读建议:六层技术栈是「纵向分层」,而业务数据是「横向流动」的——先到总体架构页建立全局地图,再按学习路线逐层下钻,脉络最清晰。

如果你习惯「先看问题再选章节」,下面这张速查表列出每一章回答的核心问题与建议阅读顺序:

层次 对应章节 该章回答的核心问题 建议顺序
存储与表格式层 存储层 一份数据如何存得便宜、读得快、改得稳? 第 1 站
计算引擎层 计算层 批和流为什么要用两套引擎,又如何共享存储? 第 2 站
查询引擎层 查询层 Trino / Doris / ClickHouse 各自的边界在哪里? 第 3 站
数据集成层 数据集成 业务库增量如何分钟级、不重不丢地入湖? 第 4 站
调度与资源层 调度资源 上千个任务如何编排、重跑并按租户隔离资源? 第 5 站
可观测性层 可观测 指标、日志、告警如何形成故障处置闭环? 第 6 站

学习路线

湖仓一体知识点庞杂,最大的学习风险是「碎片化收藏、从未系统打通」。下面是一条经过实践检验的四阶段进阶路线,每个阶段都有明确的产出检验,避免「看过等于会了」:

① 打牢存储底座:对象存储 + Iceberg

先吃透 HDFS / S3-MinIO 的存储语义与 Parquet 的列存布局,再深入 Iceberg 的快照机制、元数据树(metadata.json → manifest list → manifest)、隐藏分区与 compaction。存储是湖仓一切能力的源头:引擎可以换,调度可以换,唯独表格式一旦选错,迁移成本极高。本阶段结束后,你应能独立回答「一次 UPDATE 在 Iceberg 里到底发生了什么」。建议 2~3 周

② 引驾齐驱:Spark / Flink 批流一体 + Trino / Doris / ClickHouse

计算与查询是湖仓的「两驾马车」:Spark 解决大规模离线加工与资源模型,Flink 解决实时计算与流式入湖;Trino 提供交互式联邦查询,Doris 与 ClickHouse 提供实时 OLAP 与日志时序场景的极致性能。本阶段的关键不是背 API,而是理解每个引擎的资源模型与适用边界——什么时候用 Spark、什么时候 Trino 一条 SQL 就够。建议 3~4 周

③ 稳定运行:Kafka / CDC 集成、DolphinScheduler / YARN、可观测体系

数据进得来、任务跑得稳、故障看得见,平台才算「生产可用」。集成层解决数据如何实时可靠地入湖;调度层解决任务依赖、补数与多租户资源配额;可观测层用 Prometheus + Grafana + EFK 建立指标、日志、告警的闭环。本阶段是从「写 Demo」到「值生产班」的分水岭。建议 2~3 周

④ 治理与实战:数据治理、性能调优、高阶场景

从「跑通」走向「跑好」:建立元数据、血缘、质量与安全体系;掌握分区裁剪、小文件治理、join 策略、内存调优等性能手段;最后把底座能力组合成情报研判、AI 检索、时空分析等高阶场景,并对照「数据湖仓一体架构师」的岗位要求查漏补缺。建议 3~4 周

节奏建议:全路线约 10~14 周。每阶段坚持「先动手、再读文档、最后写复盘笔记」的循环;代码跑不通时优先查组件版本兼容矩阵,而不是盲目换版本。

四阶段环环相扣:底座决定你能走多稳,引擎决定你能跑多快,运行体系决定你敢不敢上生产,治理与实战决定你能拿多高的职级报价。任何时候中断学习后回头,请先重读当前阶段对应的「产出检验」,用能否复现检验结果来判断从哪里续上,而不是从目录第一页重来。

治理与实战

完成四层基础学习后,以下四章帮你完成从「会用」到「能扛」的跨越,它们也是架构师面试与生产评审中最常被追问的主题:

数据治理

元数据管理、血缘追踪、数据质量、数据安全与合规——治理不是口号,而是湖仓长期不腐化的免疫系统。

进入学习 →

性能调优

分区裁剪、小文件治理、join 策略、shuffle 与内存参数、物化视图与缓存——让同一套硬件跑出数倍吞吐。

进入学习 →

场景实战

情报研判、AI 向量检索、时序分析、GIS 空间分析、图计算——把六层底座组合成业务真正买单的高阶能力。

进入学习 →

岗位进阶

数据湖仓一体架构师的能力模型、面试题拆解、架构设计答题框架与职业路径规划。

进入学习 →

适合谁读

本站内容按「数据湖仓一体架构师」的能力模型组织,以下三类读者都能各取所需:

平台架构师:需要全局视角做分层设计与技术选型,向管理层讲清楚「为什么这么建」。
  • 重点阅读:总体架构、存储层、调度资源、岗位进阶
  • 核心收获:六层参考架构、选型五原则、容量与成本测算方法
大数据开发工程师:每天与 Spark / Flink / Trino 作业为伴,要让任务跑得又快又稳。
  • 重点阅读:计算层、查询层、数据集成、性能调优
  • 核心收获:批流一体写法、CDC 链路搭建、参数级调优手段
数据治理岗:负责元数据、血缘、质量与安全,让湖里的数据可信可用可审计。
  • 重点阅读:数据治理、可观测、存储层(元数据原理)
  • 核心收获:基于表格式快照的血追体系、质量规则引擎、权限模型设计
下一步:如果你是第一次接触湖仓概念,建议从湖仓一体总体架构开始,先建立六层全景地图,再进入各章细节;如果你已有实战经验,可直接跳到性能调优与场景实战查漏补缺。