数据湖 | 青训营笔记

93 阅读1分钟

这是我参与「第四届青训营 」笔记创作活动的的第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。

技术选型

在这里插入图片描述