【数据湖Hudi-2-Hudi基本概念】

核心概念

1.基本概念

1.时间轴(TimeLine)

时间轴
Hudi的核心是维护表 在不同的即时时间(instants) 执行的所有操作的 时间轴(timeline),这样做:1.可以提供表的即时视图;2.有效支持按到达顺序检索数据。
instant由一下三部分组成:

  • 1.Instant action
  • 2.Instant time
  • 3.State
    在这里插入图片描述在这里插入图片描述在这里插入图片描述
    1. 两个时间概念
      hudi中两个重要的时间概念:
    • Arrival time:数据到达Hudi时间,commit time。
    • Event time:record中记录的时间。
    • 对于迟到数据,通过时间维度方面的处理,迟到数据也会对应落地到对应的正确分区,不会落地到错误的分区。
      hudi针对迟到数据的处理策略

2.文件布局(File Layout)

1.文件结构

hudi文件结构在这里插入图片描述
Hudi存储分为一下两部分:

  • 元数据
  • 数据
    在这里插入图片描述
2.文件管理

hudi文件管理

  • 1.Hudi将数据表组织成分布式文件系统基本路径(basepath)下的目录结构。

  • 2.表被划分为多个分区,这些分区是包含该分区的数据文件的文件夹,非常类似于Hive表。

  • 3.在每个分区中,文件被组织成文件组,由文件ID唯一标识。

  • 4.每个文件组包含几个文件片(FileSlice)

  • 5.每个文件片包含:
    文件片包含信息

  • 6.Hudi采用多版本并发控制(Multiversion Concurrency Control,MVCC)

    • compaction操作:合并日志和基本文件以产生新的文件片
    • clean操作:清除不使用的/旧的文件片以回收文件系统上的空间。
  • 7.Hudi中应用的布隆过滤器在这里插入图片描述

  • 8.Hudi中的Log文件组成
    在这里插入图片描述
    在这里插入图片描述

3.索引(Index)

1.索引的原理:
Hudi通过索引机制提供高效的upserts,具体是将给定的hoodie key(record key+partition path)与文件id(文件组)建立唯一映射。这种映射关系,**数据第一次写入文件后保持不变**,所以,一个FileGroup包含了一批record的所有版本记录。Index用于区分消息是INSERT还是UPDATE。
![有索引的优势,减少文件的扫描](https://img-blog.csdnimg.cn/f52591d8a0a443428fbb05746a526bcf.png)
2.索引的优势:
Hudi为了消除不必要的读写,引入了索引的实现。在有了索引(Index)之后,更新的数据可以快速被定位到对应的File Group。上图为例,白色是基本文件,黄色是更新数据,有了索引机制后,可以做到:避免读取不需要的文件、避免更新不必要的文件、无需将更新数据和历史数据做分布式关联,只需要在File Group内做合并。
3.索引的类型:

spark可以选择的索引类型
flink可以使用的索引

4.全局索引和非全局索引(除了Hbase的索引是全局索引,其他索引类型默认使用非全局索引)
- 非全局索引适用于大表
- 全局索引适用于小表

在这里插入图片描述

5.索引的选择策略
  • 1.对事实表的延迟更新:选择布隆过滤器
    事实表的特点
    最新的数据在最近更新在这里插入图片描述在这里插入图片描述
  • 2.对事件表的去重
    事件表的特点图解释在这里插入图片描述
  • 3.对维度表的随机更删
    Hudi表的更删维度表的处理使用简单索引或者HBase索引
    针对分区路径发生变化的情况,需要设置参数,来解决这样问题。在这里插入图片描述

4.表类型(Table Types)

1.COW(Copy On Write)
  • 在COW表中,只有数据文件/基本文件(.parquet),没有增量日志文件(.log.*)。
  • 对每一个新批次写入都将创建相应数据文件的新版本(新的FileSlice),新版本文件包括旧版本文件的记录以及来自传入批次的记录(全量最新)。
    文件写入
    在这里插入图片描述
    COW由于在写入期间进行合并,则会产生一些写入延迟。但是COW的优势在于他的简单性,不需要其他表服务(不需要压缩 compaction),相对容易调试。
2.MOR(Merge On Read)
  • MOR表中,包含列存的基本文件(.parquet)和行存的增量日志文件(基于行的avro格式,.log.*)。
    在这里插入图片描述在这里插入图片描述
    MOR模式原理示意图在这里插入图片描述
3.COW与MOR对比

COW比较适合于批处理,因为中间有写放大的情况。批处理更加适合于此场景。
MOR 相对比较适合于流式处理,追加数据的情况写入。加少了写放大,更新成本较低。也可以适用于批处理。
两者对比

5.查询类型(Query Types)

1.快照查询(Snapshot Queries)

在这里插入图片描述查询效果图展示

2.增量查询(Incremental Queries)

在这里插入图片描述

  • 不是查询全量数据,是指定某次commit或者delta commit的数据的增量的查询。只能查询当本次增量的变化的数据。
3.读优化查询(Read Optimized Queries)

在这里插入图片描述

  • 对于MOR类型表来说,不是查询了最终的全量数据,因为是在compact状态提交的数据,compact状态之后,MOR类型的表格有可能会产生多次增量提交,生成多个.log文件。这其中的.log文件就不能被查询到。
    在这里插入图片描述
    在这里插入图片描述
4.不同表支持的查询类型

在这里插入图片描述

5.COW类型表不同查询类型的对比

在这里插入图片描述

6.MOR类型表不同查询类型的对比

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着互联网的发展,数据的不断膨胀,从刚开始的关系型数据库到非关系型数据库,再到大数据技术,技术的不断演进最终是随着数据膨胀而不断改变,最初的数据仓库能解决我们的问题,但是随着时代发展,企业已经不满足于数据仓库,希望有更强大的技术来支撑数据的存储,包括结构化,非结构化的数据等,希望能够积累企业的数据,从中挖掘出更大的价值。基于这个背景,数据湖的技术应运而生。本课程基于真实的企业数据湖案例进行讲解,结合业务实现数据湖平台,让大家在实践中理解和掌握数据湖技术,未来数据湖的需求也会不断加大,希望同学们抓住这个机遇。项目中将以热门的互联网电商业务场景为案例讲解,具体分析指标包含:流量分析,订单分析,用户行为分析,营销分析,广告分析等,能承载海量数据的实时分析,数据分析涵盖全端(PC、移动、小程序)应用。Apache HudiHadoop Upserts anD Incrementals,管理大型分析数据集在HDFS上的存储。Hudi的主要目的是高效减少摄取过程中的数据延迟。Hudi的出现解决了现有hadoop体系的几个问题:1、HDFS的可伸缩性限制 2、需要在Hadoop中更快地呈现数据 3、没有直接支持对现有数据的更新和删除 4、快速的ETL和建模 5、要检索所有更新的记录,无论这些更新是添加到最近日期分区的新记录还是对旧数据的更新,Hudi都允许用户使用最后一个检查点时间戳,此过程不用执行扫描整个源的查询。 本课程包含的技术: 开发工具为:IDEA、WebStorm Flink1.9.0、HudiClickHouseHadoop2.7.5 Hbase2.2.6Kafka2.1.0 Hive2.2.0HDFS、MapReduceSpark、ZookeeperBinlog、Canal、MySQLSpringBoot2.0.2.RELEASE SpringCloud Finchley.RELEASEVue.js、Nodejs、HighchartsLinux Shell编程课程亮点: 1.与企业接轨、真实工业界产品 2.ClickHouse高性能列式存储数据库 3.大数据热门技术Flink4.Flink join 实战 5.Hudi数据湖技术6.集成指标明细查询 7.主流微服务后端系统 8.数据库实时同步解决方案 9.涵盖主流前端技术VUE+jQuery+Ajax+NodeJS 10.集成SpringCloud实现统一整合方案 11.互联网大数据企业热门技术栈 12.支持海量数据的实时分析 13.支持全端实时数据分析 14.全程代码实操,提供全部代码和资料 15.提供答疑和提供企业技术方案咨询企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业解决方案。  版权归作者所有,盗版将进行法律维权。  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值