2021-10-13
1.三个开源数据湖技术框架比较
缺点:
Delta:1.抽象程度不高,需要绑定spark 2.功能不完善
Hudi:1.新版本已经完善支持python和flink,但对flink支持没那么好,和flink集成有一些bug
Iceberg:1.功能没有Hudi完善,做不到小文件合并
2.Apache Hudi核心概念介绍
特性:
index:索引,快速找到想要的内容
文件格式:支持parquet(列式存储),avro(行式存储)
Timeline时间轴:增量的去管理时间版本,用于数据回溯
写入方式:
COW(copy on write): 读写分离,写时先将原文件复制一个副本,然后写入副本,读时读原文件
MOR(merge on read): 读时合并,写时先写到日志文件中,读数据时候做原文件和log(新增数据)合并
读方式:
读优化: 只查询指定的commit之前所限定范围的最新数据
增量:可以查询到最新写入到这个文件里的数据(可以查到commit之后的数据)
快照查询:可以查询commit之后不同历史版本的数据
views视图: 提供读取数据的方式(hive,spark)
Hudi原语(一旦开始就不能停止,原子性):
1. 支持update/Delete(删除是新插入一条数据,是否删除字段显示true;update插入两天数据,一条delete,一条字段是否插入显示true):
2.变更流:
Hudi表设计--时间
Arrival time: 数据到达Hudi时间,注入时间
commit time:提交时间,处理时间
Event time: record中记录时间,事件时间
Hudi表设计--有序的时间轴元数据
1.只要对数据有一些操作,Hudi把这些操作对应的元数据用时间轴Timeline维护起立,
建instant(Action,Time,State)
2.Hudi保证了在时间轴上原子性和一致性
Hudi表设计--数据文件
Hudi表设计--Hoodie key
Hudi写时架构参考Hbase架构
3.Apache Hudi的特性和功能
4.Hudi的存储格式和查询类型
5.基于Hudi构建企业级数据湖
数仓体系痛点:
可靠性低,高延时,小文件问题,数据版本缺失,不支持增量处理