hudi概念

2023-11-20

近实时摄取

对于 RDBMS 关系型的摄入,Hudi提供了更快的 Upset 操作。例如,你可以通过 MySql binlog 的形式或者 Sqoop 导入到 hdfs上的对应的 Hudi表中,这样操作比 Sqoop 批量合并 job(Sqoop merge)和复杂合并工作流更加快速高效。

对于NoSql的数据库,比如Cassandra,Voldemort,Hbase,这种可以存储数十亿行的数据库。采用完全批量加载是根本不可行的,并且如果摄取数据要跟上通常较高的更新量,则需要更有效的方法。

即使对于像 Kafka 这样不可变数据库源,Hudi也会在 HDFS上强制执行最小文件大小,从而通过整体解决 Hadoop 领域中小文件过多问题,改善 NameNode 的运行状况。

对于事件流尤为重要,因为事件流通常较大(例如∶ 点击流),并且如果管理不善,可能会严重损害 Hadoop 集群。

在所有来源中,Hudi 都增加了急需的功能,即通过提交概念将新数据原子推送给消费者,避免摄入数据失败。

近实时分析

Hadoop上交互式的 SQL解决方案有 Presto 和 Spark sql,将数据的更新时间缩短至几分钟。

Hudi可以提供多种高效的替代方案,并可以对存储在 DFS 中的多个大小表进行实时分析,此外 Hudi 没有外部依赖,例如专用实时分析的专用HBase 集群,因此可以在不增加操作开销的情况下,进行更快更新鲜的分析。

增量处理管道

Hudi 通过提供一种以记录粒度(而不是文件夹/分区)消耗上游 Hudi表 HU 的新数据(包括最新数据),应用处理逻辑并有效地更新协调最新数据的方式再次进行救援。下游护桌HD。在这里,HU 和 HD可以以更频繁的时间表(例如 15 分钟)连续进行调度,并在HD 上提供30分钟的终端延迟。

DFS的数据分散

Hudi可以像Kafka 一样,用于数据分散,将每个管道的数据输出到Hudi表中,然后将其递增尾部以获取新数据并写入服务存储中。

和其他组件对比

和kudu对比

Kudu与分布式文件系统抽象和HDFS完全不同,它自己的一组存储服务器通过RAFT相互通信。另一方面,Hudi旨在与底层Hadoop兼容文件系统(HDFS,S3或 Ceph)一起使用,并且没有自己的存储服务器,而是依靠 Apache Spark来完成繁重的工作。因此,就像其他 Spark 作业一样,Hudi可以轻松扩展,而 Kudu 则需要硬件和操作支持,这对于HBase或 Vertica 这样的数据存储来说是典型的。

和Hbase对比

HBase 是 OLTP 工作负载的关键值存储,但鉴于与 Hadoop 的相似性,用户通常倾向于将 HBase 与分析相关联。鉴于HBase 经过严格的写优化,它支持开箱即用的亚秒级更新, Hive-on-HBase 允许用户查询该数据。 但是,就分析工作负载的实际性能而言,混合列式存储格式(例如 Parquet/ ORC)可以轻松击败 HBase,因为这些工作负载主要是读取繁重的工作。 Hudi弥补了更快的数据与具有分析性存储格式之间的差距。 从操作的角度来看,与仅管理分析用的大型 HBase 区域服务器场相比,为用户提供可提供更快数据的库更具可扩展性。 最终,HBase 不像 Hudi这样的一流公民来支持诸如提交时间,增量拉动之类的增量处理原语。

和streaming对比

Hudi 可以与当今的批处理(写时复制表)和流式(读时合并表)作业集成,以将计算
结果存储在 Hadoop中。对于Spark应用程序,这可以通过将 Hudi库与 Spark/Spark流式DAG直接集成来实现。在非 Spark处理系统(例如 Flink,Hive)的情况下,可以在各个系统中进行处理,然后通过 Kafka 主题/DFS中间文件将其发送到 Hudi 表中。从概念上讲,数据处理管道仅由三个部分组成 源,处理,接收器,用户最终针对接收器运行查询以使用管道的结果。 Hudi 可以充当将数据存储在 DFS上的源或接收器。 Hudi 在给定流处理管道上的适用性最终归结为 Presto / SparkSQL/ Hive 对您的查询的适用性。

基础知识

Timeline

Hudi 的核心是维护不同时间对表执行的所有操作的事件表,这有助于提供表的即时视图,同时还有效地支持按到达顺序进行数据检索。

Hudi 包含以下组件∶

(1)Instant action∶在表上的操作类型

(2)Instant time∶ 操作开始的一个时间戳,该时间戳会按照开始时间顺序单调递增

(3)state∶即时状态

Hudi 保证在时间轴上执行的操作都是原先性的,所有执行的操作包括∶

(1)commits∶原子的写入一张表的操作

(2)cleans∶后台消除了表中的旧版本数据,即表中不在需要的数据

(3)delta_commit增量提交,将一批数据原子写入到 MergeOnRead表中,并且只记录到增量日志中

(4)compaction∶后台协调 Hudi 中的差异数据

(5)rollback∶回滚,删除在写入过程中的数据

(6)savepoint∶将某些文件标记"已保存",以便清理数据时不会删除它们,一般用于表的还原,可以将数据还原到某个时间点

任何操作都可以处于以下状态

(1)Requested∶表示已安排操作行为,但是尚未开始

(2)Inflight∶表示正在执行当前操作

(3)Completed∶表示已完成操作

File management

Hudi将表组织成 DFS上基本路径下的目录结构。表分位几个分区,与hive类似,每个分区均有唯一标示。

在每个分区内,有多个数据组,每个数据组包含几个文件片,其中文件片包含基本文件和日志文件。Hudi采用 MVCC设计,其中压缩操作将日志文件和基本数据文件合并成新的文件片,而清楚操作则将未使用的文件片去除。

索引

Hudi通过使用索引机制,生成 hoodie密钥映射对应文件ID,从而提供高效 upsert 操作。

表类型

(1)Copy on Write∶仅使用列式存储,例如 parquet。仅更新版本号,通过写入过程中执行同步合并来重写文件

(2)Merge on Read∶基于列式存储(parquet)和行式存储(arvo)结合的文件更始进行存储。更新记录到增量文件,压缩同步和异步生成新版本的文件

查询类型

(1)快照查询(Snapshot Queries)∶查询操作将查询最新快照的表数据。如果是 Merge on Read类型的表,它将动态合并最新文件版本的基本数据和增量数据用于显示查询。如果是 Copy On Write 类型的表,它直接查询 parquet 表,同时提供upsert/delete 操作.

(2)增量查询(Incremental Queries)∶查询只能看到写入表的新数据。这有效的提供了 change streams 来启用增量数据管道。

(3)优化读查询(Read Optimized Queries)∶ 查询将查看给定提交/压缩操作表的最新快
照

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hudi概念 的相关文章

随机推荐

  • 【Error】Xshell不能使用退格、删除键的解决方案

    http www ithao123 cn content 8199369 html 还存在一个问题 上下左右键 存在部分用户可以使用 部分用户不能使用的情况 暂未解决 mark一下 欢迎各位指教 摘要 xshell正在输进敕令时 若是敲错字
  • Cache java transactional

    如果在lock 前get会有cache缓存的问题 Transactional public void getOrder String id trans2 id public Order trans2 String id Optional
  • C#中的Tooltip控件

    1 写控件 private void UclPropage Load object sender EventArgs e ToolTip toolTip1 new ToolTip toolTip1 AutoPopDelay 5000 too
  • 2020/10/26近期工作总结-vue开发

    1 父子传参 父传子 方法1 在父组件中加入子组件 给子组件绑定需要传递的值 import Policy from components policy 保单信息组件 components Policy
  • Mysql进阶优化篇05——子查询的优化和排序优化

    前 言 作者简介 半旧518 长跑型选手 立志坚持写10年博客 专注于java后端 专栏简介 mysql基础 进阶 主要讲解mysql数据库sql刷题 进阶知识 包括索引 数据库调优 分库分表等 文章简介 本文将介绍JOIN语句的底层原理
  • XXX--1.0-SNAPSHOT.jar中没有主清单属性

    一 情况 将项目打包后 启动项目时报 yiqi 1 0 SNAPSHOT jar中没有主清单属性 二 原因 maven项目打包时没有配置主类 缺少plugin配置 三 解决 加上plugin配置
  • 5款最好的开源用户关系管理工具

    5款最好的开源用户关系管理工具 by Scott Nesbitt 原文链接 http opensource com business 14 7 top 5 open source crm tools 创造和维系与客户的关系不是容易的事 然而
  • c# leveldb测试

    private void button1 Click object sender EventArgs e var db LevelDB DB Open new LevelDB Options CreateIfMissing true Env
  • 【马士兵】Python基础--16(面向对象)

    Python基础 16 面向对象 文章目录 Python基础 16 面向对象 面向对象的三大特征 封装 继承 方法重写 object类 多态 静态语言与动态语言 面向对象的三大特征 封装 封装的实现 class Student def in
  • docker mysql utf8mb4 编码问题解决方法

    docker mysql utf8mb4 编码问题解决方法 最近在学习docker mysql写入中文报错的问题困扰了我2 3天 在搜索了相关资料后终于找到了解决方法 原因是mysql5 7及之前的默认字符集是latain 而它是不支持中文
  • uview的select组件选择问题

    官方文档羞涩难懂 直接用拖拽工具 对于常用的表单组件 可直接帮你生成相关事件 时间 单列多列等选择器等支持数据回显功能 免开发 在拖拽面板中的 formitem 表单项中 转载 uniapp页面速成提效工具 uniapp uview ui
  • Xray工具使用(一)

    xray简介 xray 是一款功能强大的安全评估工具 主要特性有 检测速度快 发包速度快 漏洞检测算法高效 支持范围广 大至 OWASP Top 10 通用漏洞检测 小至各种 CMS 框架 POC 均可以支持 代码质量高 编写代码的人员素质
  • 华为java社招面试题目及全部流程详解

    华为的招聘流程一直非常复杂 本人最近参加了华为的社招 对全部流程有一个总体了解 包括流程 面试题目类型 分享给大家 希望大家能有所帮助 首先是华为hr审核简历 看一个简历和所需职位的匹配度 基本就是看毕业学校 看掌握技能是否与所需职位吻合
  • 《论文阅读》CARE:通过条件图生成的共情回复因果关系推理 EMNLP 2022

    论文阅读 CARE 通过条件图生成的移情反应因果关系推理 前言 简介 基础知识 Transformer Variational Graph Auto Encoder 变分图自编码器 邻接矩阵 adjacency matrix 图神经网络 G
  • HDFS 文件读写流程剖析

    Write hadoop fs put czz log wc in 1 Client调用FileSystem create filePath 方法 与NN进行RPC通信 check是否存在及是否有权限创建 假如不ok 就返回错误信息 假如o
  • 【RTT驱动框架分析06】-pwn驱动框架分析+pwm驱动实现

    pwm pwm应用程序开发 访问 PWM 设备API 应用程序通过 RT Thread 提供的 PWM 设备管理接口来访问 PWM 设备硬件 相关接口如下所示 函数 描述 rt device find 根据 PWM 设备名称查找设备获取设备
  • React、Vue2.x、Vue3.0的diff算法

    前言 本文章不讲解 vDom 实现 mount 挂载 以及 render 函数 只讨论三种 diff 算法 VNode 类型不考虑 component functional component Fragment Teleport 只考虑 E
  • 算法篇--链表求和

    问题描述 给两个链表 每个链表为一个整数的倒序 如下 1 2 3 4 5 7 9 两个数字的结果 321 9754 10075 那么 请得到 链表的结果为 5 7 0 0 1 思考 思路总结 两个链表肯定有一个最长的 等于情况取哪个都行 所
  • sudo配置文件/etc/sudoers详解及实战用法

    一 sudo执行命令的流程 将当前用户切换到超级用户下 或切换到指定的用户下 然后以超级用户或其指定切换到的用户身份执行命令 执行完成后 直接退回到当前用户 具体工作过程如下 当用户执行sudo时 系统会主动寻找 etc sudoers文件
  • hudi概念

    近实时摄取 对于 RDBMS 关系型的摄入 Hudi提供了更快的 Upset 操作 例如 你可以通过 MySql binlog 的形式或者 Sqoop 导入到 hdfs上的对应的 Hudi表中 这样操作比 Sqoop 批量合并 job Sq