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

62 阅读2分钟
  • 文章第一句话为“这是我参与「第四届青训营 」笔记创作活动的第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的列名一一对应
  • 总结:在这节课中,我们学习到了数据湖的发展过程,还有数据库三剑客在实际中使用的对比以及相关优势,并且老师还为我们讲解了在不同情况下应该选择哪种技术,拓展了我们在现实课堂上的模糊的概念,从比较理论的方面的走到比较实际的方面,知道了在工作中我们应该怎样去选择。