ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

数据湖仓演进史:从封闭数仓、数据沼泽到现代化湖仓一体架构

数据湖仓演进史:从封闭数仓、数据沼泽到现代化湖仓一体架构 本文档基于生产环境中的真实架构推演系统性梳理大数据存储与计算范式从 1.0 时代到 3.0 时代的演进脉络深入剖析传统数据仓库Data Warehouse、数据湖Data Lake与现代湖仓一体Lakehouse的底层物理机制并厘清 Databricks 与 Delta Lake 的产业关系。1. 概念基石OLAP、数据仓库与数据湖的物理分水岭在工业界的技术讨论中经常存在将 OLAP、数据仓库与数据湖混为一谈的误区。要看清演进历史必须先确立严密的判定标准。1.1 OLAP 不等于数据湖更不等于数据仓库OLAP联机分析处理仅代表一种计算与查询负载形态Query Workload其特征是大吞吐扫描、多维聚合、复杂计算与高延迟容忍度无论是 ClickHouse、Snowflake还是 Trino、Spark亦或是单机 PostgreSQL 的统计报表都可以承担 OLAP 计算OLAP 无法决定底层是“湖”还是“仓”它只代表上层业务“怎么用数据”。1.2 区分“仓”与“湖”的物理分水岭区分一个系统到底是数据仓库还是数据湖业界存在两个核心判定准则【判定准则一: 物理文件掌控权 (Vendor Lock-in)】 ┌─────────────────────────────────┐ ┌─────────────────────────────────┐ │ 传统数据仓库 (Warehouse) │ │ 现代数据湖仓 (Lakehouse) │ ├─────────────────────────────────┤ ├─────────────────────────────────┤ │ 数据被封闭在引擎私有二进制格式中 │ │ 数据以开放工业标准存储 (Parquet) │ │ 关掉 ClickHouse / Snowflake 进程 │ │ 关掉 Trino / Spark 计算集群 │ │ 底层数据变成一堆无法读取的乱码碎片 │ │ 底层数据文件依然完好任何引擎秒读 │ └─────────────────────────────────┘ └─────────────────────────────────┘ 【判定准则二: Schema 约束时机 (Schema Enforcement)】 * 数据仓库 (Schema-on-Write) : 写入前必须预先定义严格字段数据削足适履清洗后方可入库。 * 早期数据湖 (Schema-on-Read): 写入时不做强校验原始文件直接堆积读取时再动态解析。2. 数据架构的三代演进史3_0时代_现代湖仓一体_Lakehouse2_0时代_基于Hive体系的文件级数据湖1_0时代_传统数据仓库与早期原始数据湖成本压力与海量半结构化数据驱动引入列存与基本元数据管理解决事务、并发、性能痛点吸收数仓优势传统企业数仓 (Oracle / Teradata / Greenplum)• 优点: 严谨 ACID 事务、强 Schema 约束• 痛点: 存算强绑定、硬件成本极其昂贵、无法存半结构化数据原始数据湖 (Hadoop HDFS / 早期 S3 裸目录)• 做法: 原始文件全量倾倒 (Raw Logs / CSV / JSON)• 痛点: 无事务、并发读写报错、缺乏元数据沦为数据沼泽2.0 数据湖 (Hive Metastore Spark / Presto Parquet)• 物理本质: 目录即表 (Directory as Table)• 痛点: 依赖单机 MySQL 查分区、大目录 S3 LIST 超时、无快照隔离3.0 湖仓一体 (Table Format 开放表格式革命)• 核心三剑客: Apache Iceberg / Delta Lake / Apache Hudi ( Paimon)• 物理本质: 快照元数据树 (Snapshot Tree) 解耦目录与事务• 架构收益: 开放对象存储 (S3/R2) 完整 ACID 毫秒级时间旅行 自由插拔引擎2.1 1.0 时代传统封闭数仓 vs 原始数据沼泽2010 年前传统企业级数仓Data Warehouse代表体系Teradata、Oracle Exadata、Greenplum、IBM Netezza架构特征高度集成的专有软硬件一体机Appliance或单体进程。采用集中式块存储写入时强制 Schema 校验致命瓶颈随着互联网海量日志与移动端数据爆发专有存储的扩容成本呈指数级上升同时无法处理音频、图像、多层嵌套 JSON 等非标准关系结构。原始数据湖Raw Data Lake代表体系Hadoop HDFS、早期 AWS S3 裸目录口号与定位“生肉存储读时解析”。业务将原始日志、未清洗 CSV 全量倾倒入分布式文件系统留作备查底账演进结局数据沼泽 Data Swamp由于缺乏事务控制写入中途故障会导致残缺文件残留文件缺乏统计信息导致检索全表暴力扫描同一份数据没人敢改、不敢删最终堆积成废弃的数字垃圾场。2.2 2.0 时代基于 Hive Metastore 的文件级数据湖2010 ~ 2020为了治理原始数据湖的混乱业界确立了以Apache Hive 为核心的元数据标准形成了延续十年的“计算三驾马车 Hive Metastore”格局1. 查询分区物理位置2. 返回目录路径3. 发起 S3 LIST 遍历目录并下载文件查询与分析端: Hive CLI / Spark SQL / Presto (Trino前身)Hive Metastore (HMS 服务)底层驱动: 单机 MySQL / PostgreSQL 存储元数据分布式存储: HDFS / AWS S3 物理目录物理结构: /warehouse/tables/year2026/month09/data_01.parquet2.2.1 物理本质“目录即表”Directory as Table在 2.0 体系中表的定义本质上是一个文件系统目录分区则是子目录。例如s3://lake-bucket/raw_sms/year2026/month09/系统认为该目录下的全部文件共同构成了这个分区的数据。2.2.2 2.0 架构的深层硬伤与翻车根源致命的 S3 文件列表扫描S3 LIST API Bottleneck对象存储不同于本地磁盘调用LIST列举目录下文件需要按页发起 HTTP 请求。若单个分区内存在几万个小文件计算引擎在开始读数据前光是列出文件名就需要消耗 10 到 20 分钟读写无快照隔离Dirty Reads Job Crash写入任务正往 S3 目录里写 10 个新的 Parquet 文件写到第 5 个时下游 Presto 恰好发起查询。Presto 读入一个未写完且没有 Footer 校验信息的残缺文件瞬间触发EOFException导致查询任务崩溃单行修改与删除的灾难No In-place Update/Delete面对 GDPR 隐私合规或业务冲正要求若想删除某一行记录必须把该文件甚至整个分区数十 GB全部加载到内存中重写一遍计算成本与 I/O 开销巨大元数据状态脱节MSCK REPAIR TABLESpark 在存储桶新建了分区文件Hive Metastore 并不会自动感知必须人工或脚本执行耗时漫长的MSCK REPAIR TABLE重新扫描全量目录同步元数据。2.3 3.0 时代湖仓一体与现代开放表格式革命2020 至今为了彻底根除 2.0 时代的物理设计缺陷以Apache Iceberg、Delta Lake、Apache Hudi为代表的“开放表格式Open Table Format”应运而生。3.0 时代将“表”的概念从“文件目录”提升为**“一棵层级自解释的原子快照树Snapshot Tree”**3.0 湖仓核心解耦逻辑: 表结构定义不再由文件存储路径决定而是由根节点 metadata.json 指向的快照决定。 任何写入必须在生成完整的元数据快照后通过原子提交 (Atomic Commit) 盖章生效。3. 深入解析Databricks 与 Delta Lake 的产业与技术关系在 3.0 湖仓生态中很多人对 Databricks 与 Delta Lake 的界限感到模糊。两者分别属于商业实体与开源技术底座。研发、主导并开源将 Delta Lake 作为默认原生存储底座结合 Photon 向量化引擎 Unity Catalog 企业治理商业帝国: Databricks Inc.• 创始人: Apache Spark 原班核心团队 (Matei Zaharia 等)• 业务模式: 商业全托管湖仓云平台 (AWS / Azure / GCP)• 估值规模: 超过 430 亿美元的企业级 AI Data 独角兽开源核心资产: Delta Lake• 诞生背景: Databricks 针对 2.0 湖缺陷研发的核心存储层• 组织归属: 已捐赠至 Linux Foundation 进行中立治理• 技术特征: Parquet 列存 JSON 事务日志 (_delta_log)Databricks 商业智能平台(Databricks Intelligence Platform)3.1 商业实体Databricks出身由加州大学伯克利分校 AMPLab 孵化出 Apache Spark 的核心团队成员创立产业地位全球湖仓一体概念的提出者与最大商业推动者提供跨 AWS、Azure、GCP 的多云全托管大数据平台核心武器Photon 引擎采用 C 重写的高性能向量化查询引擎Unity Catalog企业级跨工作区统一数据目录与数据治理安全中心。3.2 开源表格式Delta Lake定位由 Databricks 设计并主导的高性能开放表格式现已移交至Linux 基金会开源运营物理机制数据层采用标准的 Apache Parquet 列式存储事务层Delta Log在表根目录下维护_delta_log/文件夹每次数据写入原子生成一个递增的 JSON 文件如000000.json,000001.json记录新增和删除的文件列表每隔 10 个快照自动生成一个压缩检查点 Parquet 文件*.checkpoint.parquet保证事务日志回溯性能与 Apache Iceberg 的竞争格局Delta Lake在 Spark / PySpark 生态中处于统治地位但早期与 Databricks 商业功能深度捆绑Apache Iceberg由 Netflix 针对性研发并捐赠给 Apache设计初衷即追求对 Spark、Trino、Flink 等多引擎绝对中立平等目前已成为 Snowflake、Apple、AWS 等中立生态的共同选择。4. 3.0 现代湖格式四大主流门派横向对比特性对比维度Apache IcebergDelta LakeApache HudiApache Paimon主导机构与背景Netflix 发起Apache 顶级项目Databricks 发起Linux 基金会Uber 发起Apache 顶级项目阿里巴巴发起Apache 顶级项目元数据架构树状三层元数据metadata.json➔ Manifest List ➔ Manifest顺序提交的递增事务日志_delta_log/*.json Checkpoints文件级 Timeline 元数据 专用存储索引文件针对流式场景定制的 LSM-Tree 结构文件底层数据格式Parquet / ORC / AvroParquetParquet / ORC 增量 Avro 日志Parquet / ORC计算引擎生态偏好绝对中立Trino、Spark、Flink 同为第一公民深度偏向 Spark其他引擎依赖专用连接器偏向 Spark 与 Presto 批量分析深度绑定 Apache Flink主打纯流式湖仓并发事务控制 (ACID)乐观并发控制 (OCC) Catalog CAS 原子更新乐观并发控制 (OCC) 依赖文件系统租约/外部存储锁乐观并发控制 (OCC) 外部 ZooKeeper/DynamoDB 分布式锁针对流式连续摄入优化的高频事务提交细粒度数据更新方式Copy-on-Write (CoW) 与 Merge-on-Read (MoR)Copy-on-Write (早期) 与 增量 Deletion Vectors强大的 Copy-on-Write 与 Merge-on-Read专为实时计算打造的 LSM-Tree 主键合并与预聚合分区机制隐藏分区Hidden Partitioning基于表达式分区无感演进传统物理目录分区支持 Partition Pruning物理目录分区逻辑分区与 Bucket 桶级哈希拆分最适配业务场景通用企业级湖仓、实时批流入湖、Trino 交互式秒级 OLAP 探查深度依赖 Spark/PySpark 进行大规模 ETL 与 AI 模型训练物流、订单状态等高频 CDC 单行增量同步系统毫秒级流式入湖、Flink 流批一体实时看板与物化视图5. 架构演进总结从传统数据库到现代湖仓计算与存储的物理边界发生了一场清晰的技术解构1.0 时代解决了“存得下”的问题以廉价分布式存储容纳全量原始数据但牺牲了数据一致性与可用性2.0 时代解决了“能检索”的问题以 Hive Metastore 与列式文件建立起初级数据目录但缺乏现代事务支持维护成本高昂3.0 时代解决了“既要开放、又要严密”的问题通过Apache Iceberg / Delta Lake 等开放表格式在最通用、最廉价的对象存储底座上复现了传统关系型数据库所有的核心事务保证ACID、快照隔离、时间旅行同时彻底消除了厂商专有格式锁定。现代数据系统由此完成了计算引擎Flink / Trino / Spark可自由替换、存储介质S3 / R2按需弹性伸缩、数据资产Parquet 表格式永久开放的三权分立终极架构闭环。
返回列表