- 文章第一句话为“这是我参与「第四届青训营 」笔记创作活动的第28天
- hadoop-分布式存储HDFS
- 按照目录来区分不同数据集
- 好处:同一公司或者组织可以使用共同存储;数据访问方便,灵活性高
- 坏处:没有记录文件的schema(包括列名、类型);难以得知数据集包含的文件及组织形式;多个程序修改时,其他程序很难修改
-
Hive
- 对数据湖中的数据集进行集中定义
- 缺点:对动态修改的表无法做到transaction ACID
-
湖仓一体
- 数据仓库-将数据从数据源提取、转换加载到目的地;存储+计算不分离;严格控制写入数据的schema
- 数据湖现状:结合数据仓库和数据湖的优点,降级成本,可实现transaction ACID、schema严格管理、存储计算分离、支持多种计算引擎和文件格式
-
涉及的主要技术
-
文件结构
- 先按每条数据的date进行分区
- 额外使用metadata文件记录表信息(可以不用看源文件就可以知道数据信息)
-
time travel
- 每次生成元数据文件时要记录变更,可以递增版本号命名
- 在更新数据是也不要直接删掉旧数据,新旧需同时存在
- 元数据要存储具体的文件路径
-
事务特点:ACID
-
A:本次写入要门对客户可见要么不可见(需要设计)
- 先写parquet数据文件;在写json元数据文件
- 用户只读以版本号命名的json文件,每次读版本号最大的现状
- 命名可利用hash
- 可解决读写冲突
- C:输入的是什么,落盘的就是什么(由计算引擎保证)
-
I:正确解决读写冲突和写写冲突(需要设计)
-
隔离:update时先获取分区,加锁需要写入的文件,进入写json阶段
- 若版本未更新:直接写
- 版本已更新:看看新版本是否需更新,没有的话直接写;有的话需要重新update相同的分区
-
- D:落完数据后,即使服务器重启结果不变(由存储引擎保证)
-
-
Schema Evolution
- 用户从数据湖接口获取
- 数据湖内部读取应该读取的parquet,并在schema上做进一步处理
- 处理过程:ID将data和metadat的列名一一对应
-
-
总结:在这节课中,我们学习到了数据湖的发展过程,还有数据库三剑客在实际中使用的对比以及相关优势,并且老师还为我们讲解了在不同情况下应该选择哪种技术,拓展了我们在现实课堂上的模糊的概念,从比较理论的方面的走到比较实际的方面,知道了在工作中我们应该怎样去选择。