当前位置:网站首页>Hudi 数据管理和存储概述
Hudi 数据管理和存储概述
2022-07-03 09:00:00 【小胡今天有变强吗】
数据管理
**Hudi 是如何管理数据? **
使用表Table形式组织数据,并且每张表中数据类 似Hive分区表,按照分区字段划分数据到不同目录中, 每条数据有主键PrimaryKey,标识数据唯一性。
Hudi 数据管理
Hudi表的数据文件,可以使用操作系统的文件系统存储,也可以使用HDFS这种分布式的文件系统存储。为了分 析性能和数据的可靠性,一般使用HDFS进行存储。以HDFS存储来看,一个Hudi表的存储文件分为两类。
.hoodie
(1).hoodie 文件:由于CRUD的零散性,每一次的操作都会生成一个文件,这些小文件越来越多后,会严重影响HDFS的 性能,Hudi设计了一套文件合并机制。 .hoodie文件夹中存放了对应的文件合并操作相关的日志文件。
Hudi把随着时间流逝,对表的一系列CRUD操作叫做Timeline,Timeline中某一次的操作,叫做Instant。
- Instant Action,记录本次操作是一次数据提交(COMMITS),还是文件合并(COMPACTION),或者是文件清理(CLEANS);
- Instant Time,本次操作发生的时间;
- State,操作的状态,发起(REQUESTED),进行中(INFLIGHT),还是已完成(COMPLETED);
amricas和asia
(2)amricas和asia相关的路径是实际的数据文件,按分区存储,分区的路径key是可以指定的。
- Hudi真实的数据文件使用Parquet文件格式存储;
- 其中包含一个metadata元数据文件和数据文件parquet列式存储。
- Hudi为了实现数据的CRUD,需要能够唯一标识一条记录,Hudi将把数据集中的唯一字段(record key ) + 数据所在 分区 (partitionPath) 联合起来当做数据的唯一键。
Hudi存储概述
Hudi数据集的组织目录结构与Hive表示非常相似,一份数据集对应这一个根目录。数据集被打散为多个分区,分区 字段以文件夹形式存在,该文件夹包含该分区的所有文件。
在根目录下,每个分区都有唯一的分区路径,每个分区数据存储在多个文件中。
每个文件都有惟一的fileId和生成文件的commit所标识。如果发生更新操作时,多个文件共享相同的fileId,但会 有不同的commit。
Metadata 元数据
- 以时间轴(timeline)的形式将数据集上的各项操作元数据维护起来,以支持数据集的瞬态视图,这部分元数据存 储于根目录下的元数据目录。一共有三种类型的元数据:
- Commits:一个单独的commit包含对数据集之上一批数据的一次原子写入操作的相关信息。我们用单调递增的时间戳来标识 commits,标定的是一次写入操作的开始。
- Cleans:用于清除数据集中不再被查询所用到的旧版本文件的后台活动。
- Compactions:用于协调Hudi内部的数据结构差异的后台活动。例如,将更新操作由基于行存的日志文件归集到列存数据上。
Index 索引
- Hudi维护着一个索引,以支持在记录key存在情况下,将新记录的key快速映射到对应的fileId。
- Bloom filter:存储于数据文件页脚。默认选项,不依赖外部系统实现。数据和索引始终保持一致。
- Apache HBase :可高效查找一小批key。在索引标记期间,此选项可能快几秒钟。
Data 数据
Hudi以两种不同的存储格式存储所有摄取的数据,用户可选择满足下列条件的任意数据格式:
读优化的列存格式(ROFormat): 缺省值为Apache Parquet;
写优化的行存格式(WOFormat): 缺省值为Apache Avro
参考资料:
边栏推荐
- LeetCode 508. 出现次数最多的子树元素和
- AcWing 787. Merge sort (template)
- 【点云处理之论文狂读前沿版9】—Advanced Feature Learning on Point Clouds using Multi-resolution Features and Learni
- Spark 结构化流写入Hudi 实践
- Temper cattle ranking problem
- 2022-2-13 learning xiangniuke project - version control
- Derivation of Fourier transform
- 2022-2-14 learning the imitation Niuke project - send email
- LeetCode 30. 串联所有单词的子串
- 2022-1-6 Niuke net brush sword finger offer
猜你喜欢
LeetCode 513. 找树左下角的值
【点云处理之论文狂读前沿版8】—— Pointview-GCN: 3D Shape Classification With Multi-View Point Clouds
Sword finger offer II 091 Paint the house
Navicat, MySQL export Er graph, er graph
[point cloud processing paper crazy reading classic version 10] - pointcnn: revolution on x-transformed points
【点云处理之论文狂读经典版13】—— Adaptive Graph Convolutional Neural Networks
LeetCode 438. 找到字符串中所有字母异位词
NPM install installation dependency package error reporting solution
[point cloud processing paper crazy reading classic version 14] - dynamic graph CNN for learning on point clouds
[set theory] order relation (chain | anti chain | chain and anti chain example | chain and anti chain theorem | chain and anti chain inference | good order relation)
随机推荐
Computing level network notes
剑指 Offer II 029. 排序的循环链表
Principles of computer composition - cache, connection mapping, learning experience
Crawler career from scratch (V): detailed explanation of re regular expression
Navicat, MySQL export Er graph, er graph
LeetCode 515. 在每个树行中找最大值
Win10 quick screenshot
STM32F103 can learning record
Data mining 2021-4-27 class notes
[kotlin learning] classes, objects and interfaces - define class inheritance structure
LeetCode 438. 找到字符串中所有字母异位词
数字化管理中台+低代码,JNPF开启企业数字化转型的新引擎
【点云处理之论文狂读经典版8】—— O-CNN: Octree-based Convolutional Neural Networks for 3D Shape Analysis
拯救剧荒,程序员最爱看的高分美剧TOP10
Discussion on enterprise informatization construction
LeetCode 508. The most frequent subtree elements and
dried food! What problems will the intelligent management of retail industry encounter? It is enough to understand this article
The less successful implementation and lessons of RESNET
【毕业季|进击的技术er】又到一年毕业季,一毕业就转行,从动物科学到程序员,10年程序员有话说
网络安全必会的基础知识