数据湖三剑客 | 青训营笔记

125 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第8天

关于数据湖

  • 数据相关慨念比较新,一直处在演进当中
  • 一开始是HDFS,裸pb、txt日志等等,叫数据湖 (管不动了就叫数据沼泽)
  • 后来出现了了Iceberg、Hudi、Delta Lake了,数据湖概念就基本等于这些产品了
  • 也更贴近于Lakehouse的慨念

Transactio

ACID,是指据库在写入或更新资斜的过程中,为保证事务是正确可靠的, 所必须具备的四个特性。

  • 以A给B转账10元为例:
  1. Atomicity::原子性 要么A-10B+10,要么都不变
  2. Consistency:一致性 不可以A-10 B+5
  3. Isolation:事务隔离一A和C同时给B转10,B最终结果应是+20
  4. Durability::持久性— 转账服务器重启,结果不变

Iceberg工作重点

  • 用户体验
  1. Schema evolution
  2. Partition evolution
  3. Hidden partition
  4. Time Travel
  5. Version Rollback
  • 性能
  1. 快速file plan
  2. 更多的filter方式
  • 可靠性
  1. ACID Transaction
  • 完全开源, 由Apache!孵化开发

Hidden Partition

  • 传统的分区方式:
    • 数据中包含了date列,则按照date分区;如果希望按照hour分区,则需要新增hour列
  • Iceberg的分区方式:
    • D数据中包含timestamp列,设置好partition transform方式
      • D设置为date时,iceberg帮你转化为date分区
      • 设置为hour时,iceberg帮你阵转化为hour分区
      • Iceberg记录了这层转化关系,并且按你的需要进行partition evolution

Hudi

即 Hadoop Upsert Delete and Incrementa

  • Hudi工作重点:
    • 1.Timeline service:Hudi管理transaction的方式
    • 2.Hudi Table Type:Copy on Write Merge on Read
    • 3.高效的Upserts:update or insert
    • 4.索引表:快速定位一条数据的位置
    • 5.Streaming Ingestion Service
      
    •  6.完全开源,由Apache孵化
      

Delta Lake工作重点

  • 1.ACID Transaction
  • 2.Schema校验(不是evolutio n)
  • 3.流批一体
  • 4.Time Travel
  • 5.Upsert/Delete
  • 6.Z-Order优化
  • 7.只开源了部分,由Databricks自己主导开发,Z-order等优化的实现未开源

技术选型

短期来看:每个项目都有一些属于自己的功能:

  • 如果强需求Upserts,也许Hudi是最好的选择
  • 如果希望可扩展性强,那么设计优良的Iceberg是最好的选择
  • 如果希望用上Z-Order等优化,那么掏钱买Databricks的企业版Delta是不二之选

长期来看:数据湖取代Hive,成为HDFS上的表格式标准是必然的,在选择之前问自己四个问题:

    1. 我濡要的feature在哪个据湖上是最稳定的
    1. 哪一个据湖能够用最简单的接入方式(SQL)用上最完善功能
    1. 哪一个据湖有计算引擎测的支持和社区的支持
  • 4.哪一个据湖的版本管理做的最好,最鲁棒