基于本文回答
0
评论

Lakehouse(湖仓一体)架构是怎么的?

知识点图片

Lakehouse(湖仓一体) 是一种结合了 数据湖(Data Lake) 的灵活性、低成本与 数据仓库(Data Warehouse) 的高性能、易管理性的新型数据架构。

简单来说,它的核心理念是:把数据仓库构建在数据湖之上

为了让你深入理解,我们可以从演进背景核心架构分层关键技术以及优势四个方面来拆解。


1. 为什么会出现 Lakehouse?(演进背景)

在 Lakehouse 出现之前,企业通常面临“两套系统”的痛苦:

  • 第一代:数据仓库(Data Warehouse)
    • 特点: 存储结构化数据,支持 ACID 事务,SQL 查询快,数据质量高。
    • 缺点: 存储成本高,无法处理非结构化数据(视频、音频、日志),不支持机器学习(ML)和数据科学工作流。
  • 第二代:数据湖(Data Lake)
    • 特点: 基于 Hadoop/S3,存储极其廉价,支持任意格式(结构化、半结构化、非结构化)。
    • 缺点: 缺乏事务支持(容易产生脏数据),没有 Schema 约束(容易变成“数据沼泽”),SQL 性能差,更新/删除数据非常困难。

现状: 很多公司不得不维护两套系统——先把数据倒进湖里做 ML,再把处理好的数据 ETL 到仓库里做 BI 报表。这导致了数据冗余、一致性差、维护成本高。

Lakehouse 的目标: 一套数据,既能做 BI(报表),又能做 AI(机器学习),且便宜、可靠。


2. Lakehouse 的核心架构(分层解析)

Lakehouse 的架构通常呈现为“三层夹心饼干”结构:

底层:廉价的云对象存储(Storage Layer)

  • 作用: 负责物理存储海量数据。
  • 介质: AWS S3, Azure Blob, Google Cloud Storage, 或者私有云的 MinIO / HDFS。
  • 文件格式: 通常使用开放的标准文件格式,如 ParquetAvroORC。这些格式压缩率高,且非专有(任何引擎都能读)。

中间层:元数据与表格式层(Metadata / Table Format Layer)—— 这是核心灵魂

  • 作用: 这一层把底层的“一堆文件”抽象成了“一张张表”。它赋予了数据湖类似数据库的能力。
  • 关键技术(三剑客):
    • Delta Lake (Databricks 主推)
    • Apache Iceberg (Netflix/Apple 主推,目前最火)
    • Apache Hudi (Uber 主推,侧重流式写入)
  • 它解决了什么?
    • ACID 事务: 保证多个人同时写数据不会乱。
    • 时间旅行(Time Travel): 可以查询“昨天下午2点”的数据状态。
    • Schema 演进: 允许表结构变更(加列、减列)而不破坏旧数据。
    • 索引与优化: 记录文件统计信息(Min/Max),加速查询过滤。

顶层:计算引擎层(Compute Layer)

  • 作用: 负责执行 SQL 或代码,进行数据处理和分析。Lakehouse 实现了存算分离,计算引擎可以随意更换。
  • 常见引擎:
    • 批处理/ETL: Apache Spark
    • 交互式查询/BI: Trino (原PrestoSQL), StarRocks, Doris, Impala
    • 流计算: Apache Flink
    • 机器学习: TensorFlow, PyTorch (直接读取底层数据)

3. 核心特征

一个标准的 Lakehouse 架构必须具备以下特征:

  1. 事务支持 (ACID): 确保并发读写时数据的一致性,解决了数据湖“脏读”的问题。
  2. Schema Enforcement (模式强制): 拒绝不符合表结构的数据写入,防止数据沼泽化。
  3. 存算分离 (Decoupled Storage & Compute): 存储用便宜的 S3,计算用弹性的 EC2/K8s。想存多少存多少,想算多快算多快,互不干扰。
  4. 开放性 (Openness): 数据以开放格式(Parquet/Iceberg)存储。不像传统数仓(如 Oracle/Teradata)那样被厂商锁定,你可以今天用 Spark 算,明天换 Trino 查,数据不用搬家。
  5. 支持多种工作负载: 同一份数据,数据分析师用 SQL 做 BI 报表,数据科学家用 Python 做机器学习。

4. 典型的技术栈示例

如果你今天要搭建一个 Lakehouse,你的架构图可能是这样的:

  • 存储: Amazon S3 (存放 Parquet 文件)
  • 表格式: Apache Iceberg (管理元数据)
  • 数据摄入: Apache Flink (实时写入) 或 Spark (批量写入)
  • 查询分析:
    • Trino / StarRocks: 给 BI 报表工具(Tableau/Superset)提供秒级 SQL 查询。
    • Spark / Python: 给算法工程师做模型训练。

5. 总结:Lakehouse 解决了什么痛点?

特性 数据湖 (Data Lake) 数据仓库 (Data Warehouse) 湖仓一体 (Lakehouse)
数据类型 任意(结构/非结构) 主要是结构化 任意
存储成本
事务性 (ACID)
数据开放性 高 (文件级) 低 (专有格式) 高 (开放表格式)
主要用户 数据科学家 业务分析师 两者皆可

一句话总结:
Lakehouse 架构就是用数据湖的低成本存储,加上一层智能的元数据管理(Iceberg/Delta),从而获得数据仓库的高级管理能力和高性能查询。

右滑查看面试常问