dev

Hadoop - Data Warehouse, Data Lake, and Lakehouse

/note-bak/dev/hadoop/data-lake/

Data Warehouse, Data Lake, Lakehouse

Data Warehouse

Data Warehouse

  • 流程:整合多个数据源,经过ETL,将数据加载到 DW 中
  • 一般使用传统的关系型数据库:Oracle + MySQL

特点

  • 支持事务:ACID
  • 存储,计算不分离:数据库有读,也有写(可以通过再加一个 OLAP 实现读写分离)
  • 严格的 Schema 控制
  • 成本高

Data Lake

Data Lake

  • 流程:将数据存储在 HDFS + HBase 上,使用 Hive 查询

特点

  • 不支持事务
  • 存储,计算分离
  • 弱 Schema 控制
  • 成本低

Lakehouse

吸收了 DW 和 DL 的优势,产生了湖仓一体的产品

特点

  • 支持简单事务
  • 存储计算分离
  • 支持 Schema 功能
  • 成本低

开源产品

  • Apache Iceberg(起源:Netflix)
  • Apache Hudi(起源:Uber)
  • Apache Delta Lake(起源:Databricks)

Core Technology

Transactions

A 原子性:先写 parquet 数据文件,后写 json 元数据文件,写 metadata 的最后一步为重命名 C 一致性:由计算引擎保证 I 隔离性:乐观锁,写 json 文件的时候,比较元数据有没有更新,如果更新的话就重写 D 持久性:由存储引擎保证

Schema Evolution

对每一列赋予一个唯一的 ID data file 和 metadata file 都会记录列的 ID 读数据时,用 ID 做映射

References