这是我参与「第四届青训营 」笔记创作活动的的第6天
数据湖的发展阶段
hdfs的不足:没有记录文件的schema。 hive:metastore:引入了schema,分区等元数据信息,对数据的元数据进行了集中的定义,管理较为方便。数据仓库不是存算分离的。 数据湖:数据湖是存算分离的
数据湖的核心功能
文件结构有schema,可分区,每天写入新数据,列存。
timetravel:可以获取历史版本的数据。每次写入生成一个新的元数据文件,记录变更。分区数据update时,不要删掉旧的数据,保持新旧数据并存。元数据钟存储的是具体路径,而不是文件夹。
支持事务:
冲突的解决:事务的隔离性
schemaEvolution: schema会变更,eg列可以删除增加rename
开源数据湖项目
iceberg:
快速的fileplan,更多的filter:读文件支持快速的裁剪,实现方式:元数据分层存储 hiddenpartition: 数据中有timestamp,分区就可以转换成day,hour等等
hudi:
**timelineService:**记录数据变更的元数据信息eg时间内容。自动判断updateOrInsert,如果原来的key有就update,没有就insertert。推测timetravel应该是根据timelineservice回滚可以实现。
copyOnWright: 更新的时候要先copy一份,保存原来的数据,再写入新的数据,计入timeline,消耗资源较大。
mergeOnRead: 把对原始数据的更新值写入单独的文件,在读的时候合并,读出更新的版本,读的时候开销更大,写的时候开销明显减小。
DeltaLake
这里是之前的图的设计。使用json记录timeline元数据信息,定期合并,做ck。