Apache Iceberg Architecture—Iceberg 架构详解

Apache Iceberg Architecture

在这里插入图片描述

Apache Iceberg 的架构可以分为三个主要层次:Iceberg Catalog、元数据层和数据层。

在这里插入图片描述


一、 Iceberg Catalog(目录)

Iceberg Catalog 是 Iceberg 的顶层组件,负责管理所有 Iceberg 表的元数据和元数据操作

Catalog 管理表的架构和元数据,提供了创建、查询和修改表的接口,是 用户和系统与Iceberg表交互的入口点。
在这里插入图片描述

Iceberg Catalog (catalog 目录)提供了一个中心位置,用户可以通过它找到每个表当前元数据文件的位置,是读取和写入 Iceberg 表的关键组件。

在这里插入图片描述

  1. 当前元数据指针

    • Iceberg Catalog 中保存每个表的当前元数据文件的指针(current metadata pointer),确保用户能够获取到最新的元数据
      在这里插入图片描述
  2. 原子操作支持

    • Catalog 必须支持原子操作,以确保在更新当前元数据指针时能够提供事务的原子性和正确性。
    • 常见的支持方式包括 HDFS、Hive Metastore 和 Nessie。
  3. 元数据存储方式

    • 不同的 Catalog 方案存储当前元数据指针的方式不同:
      • HDFS:在表的元数据文件夹中有一个名为 version-hint.txt 的文件,内容为当前元数据文件的版本号。
      • Hive Metastore:表在元存储中的条目包含一个属性,存储当前元数据文件的位置。
      • Nessie:Nessie 存储每个表的当前元数据文件的位置。
  4. 查询流程

    • 执行 SELECT 查询时,查询引擎首先访问 Iceberg Catalog,获取目标表的当前元数据文件位置,然后打开该文件进行数据读取

二、元数据层 (metadata layer)

Iceberg 的元数据层负责管理和存储有关表的关键信息,确保高效的数据读取与操作。元数据主要包括三个部分:元数据文件清单列表清单文件

在这里插入图片描述

1. 元数据文件(Metadata File)

在这里插入图片描述
元数据文件保存关于表的基本信息:

  • 表的 schema:定义表中字段的类型和名称。
  • 分区信息:说明数据如何在表中分区以优化查询性能。
  • 快照(Snapshots):记录表在不同时间点的状态。每个快照里面会列出表在某个时刻的所有 data files 列表。data files是存储在不同的manifest files里面,manifest files是存储在一个Manifest list文件里面,而一个Manifest list文件代表一个快照

在这里插入图片描述

  • 当前快照的引用:标识哪个快照是表的最新状态。

在这里插入图片描述
在这里插入图片描述

当执行 SELECT 查询时,查询引擎首先通过目录获取当前元数据文件的位置,然后读取当前快照的 ID,并在快照数组中查找该 ID,最终打开与之对应的清单列表。


2. 清单列表(Manifest List)

在这里插入图片描述
清单列表是一个指向多个清单文件的列表。每个清单文件记录一个快照的详细信息:

  • 清单文件的位置:清单文件的存储位置。
  • 快照 ID:该清单文件所属的快照 ID。
  • 分区信息:记录哪些分区包含在该清单中。
  • 列的范围:跟踪数据文件的下限和上限。

在这里插入图片描述

在这里插入图片描述

查询引擎打开清单列表后,读取清单路径并加载清单文件。此时,可以进行一些优化,例如基于行数或分区信息过滤数据。

3. 清单文件(Manifest File)

在这里插入图片描述
清单文件是 Iceberg 管理数据文件的核心,主要职责包括:

  • 跟踪数据文件及其详细信息和统计数据。
  • 每个清单文件追踪一部分数据文件,以实现并行读取和提高效率。

在这里插入图片描述

  • 文件路径:数据文件的存储位置。
  • 数据文件格式:指明使用的文件格式,如 Parquet、ORC 或 Avro。
  • 记录计数:文件中记录的数量。
  • 列的上下限:用于数据过滤和优化的统计信息。

在这里插入图片描述

当查询引擎打开清单文件后,读取文件路径和相关统计信息,以便访问实际的数据文件,并利用统计信息进行优化。


三、 数据层 (Data Layer)

数据层是实际存储数据的地方,Data Files数据文件是Apache Iceberg表真实存储数据的文件。

  • 数据文件 (Data Files)
    在这里插入图片描述
    • Iceberg 支持多种数据文件格式,如 Parquet、ORC 和 Avro。这些文件按照列式存储,便于高效的读写和压缩。如果文件格式选择的是parquet,那么文件是以“.parquet”结尾。
    • 数据文件按照 Iceberg 的分区策略进行组织,以优化数据访问。
    • Iceberg每次更新会产生多个数据文件(data files)。

在这里插入图片描述


再回过头来看一下这个结构,是不是就豁然开朗啦。
在这里插入图片描述

仅供学习使用哈

整理不易,列位彦祖一键三连哈😂

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/430662.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现一个基于nio的discard server

写在前面 源码 。 为了能够进一步的熟悉下nio相关的api操作,本文来实现一个基于nio的discard server。 discard server的意思是,server接收到来自client的一个消息之后,直接就将连接关闭,即discard。 1:正戏 1.1&…

振弦式渗压计智慧水利工程 适用恶劣环境有保障

产品概述 振弦式渗压计适合埋设在水工建筑物和基岩内,或安装在测压管、钻孔、堤坝、管道或压力容器中,以测量孔隙水压力或液位。主要部件均采用特殊钢材制造,适合在各种恶劣环境中使用。特殊的稳定补偿技术使传感器具有极小的温度补偿系数。…

瑞芯微RK3588开发板Linux系统添加自启动命令的方法,深圳触觉智能Arm嵌入式鸿蒙硬件方案商

本文适用于触觉智能所有Linux系统的开发板、主板添加自启动命令的方法,本次使用了触觉智能的EVB3588开发板演示,搭载了瑞芯微RK3588旗舰芯片。 该开发板为核心板加底板设计,为工业场景设计研发的模块化产品,10年以上稳定供货,帮助…

java -versionbash:/usr/lib/jvm/jdk1.8.0_162/bin/java:无法执行二进制文件:可执行文件格式错误

实验环境:Apple M1在VMwareFusion使用Utubun Jdk文件错误  尝试: 1、重新在网盘下载java1.8 2、在终端通过命令下载 3、确保 JDK 正确安装在系统中,可以通过 echo $JAVA_HOME 检查 JAVA_HOME 环境变量是否设置正确。 &#xfff…

springboot框架VUE3心理健康服务管理系统开发mysql数据库网页设计java编程计算机网页源码maven项目

博主介绍:专注于Java vue .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的…

Qt系统相关——QThread

文章目录 QThread的API使用示例客户端多线程应用场景互斥锁QMutexQMutexLockerQReadWriteLocker、QReadLocker、QWriteLocker 条件变量和信号量 QThread的API Qt中的多线程和Linux中的线程,本质上是一个东西 Linux线程概念 Linux多线程——线程控制 Linux多线程——…

高效驱动,掌控动力:TB67H400AFNG 马达驱动器

在如今智能设备和自动化应用领域中,驱动器的性能直接决定了系统的可靠性与效率。东芝的TB67H400AFNG有刷直流马达驱动器凭借其卓越的性能,成为众多行业解决方案中的关键部件。无论是工业控制、自动化设备还是消费类电子产品,TB67H400AFNG都能…

【ARM】A64指令介绍及内存屏障和寄存器

A64指令集介绍 ISA : Instruction System Architecture 指令集总结 跳转指令 使用跳转指令直接跳转,跳转指令有跳转指令B,带链接的跳转指令BL ,带状态切换的跳转指令BX。 B 跳转指令,跳转到指定的地址执行程序。 BL 带链接的跳…

stable diffusion 神经网络插件 controlnet 的安装,很详细

stable diffusion 神经网络插件 controlnet 的安装,很详细 一、前言二、下载1、方式一2、方式二 三、下载模型 一、前言 学到 stable diffusion 的 controlnet 插件,安装也略微曲折,这里做个记录。 下载前保证 github 能正常访问。 二、下…

css实现自定义静态进度条-vue2

实现如图所示 html&#xff1a; <div class"progress-container"><div class"progress-box left" :style"leftStyle"><div class"progress-value-top left">总中标电量</div><div class"progress-val…

在IntelliJ IDEA中设置文件自动定位

当然&#xff0c;以下是一个整理成博客格式的内容&#xff0c;关于如何在IntelliJ IDEA中设置文件自动定位功能。 在IntelliJ IDEA中设置文件自动定位 背景 最近由于公司项目开发的需求&#xff0c;我从VSCode转到了IntelliJ IDEA。虽然IDEA提供了许多强大的功能&#xff0c;…

mysql相关知识

查询一条sql语句的流程 连接器:建立连接&#xff0c;管理连接、校验用户身份查询缓存:查询语句如果命中查询缓存则直接返回&#xff0c;否则继续往下执行&#xff08;MSQL8.0 已删除&#xff09;解析 SQL&#xff1a;通过解析器对 SQL 查询语句进行词法分析、语法分析&#xf…

SQL进阶技巧:如何利用if语句简化where或join中的条件 | if条件语句的优雅使用方法

目录 0 问题场景 1 数据准备 2 问题分析 2.1 需求一 2.2需求二 3 小结 想要进一步了解SQL这门艺术语言的&#xff0c;可以订阅我的专栏数字化建设通关指南&#xff0c;将在该专栏进行详细解析。 专栏 原价99&#xff0c;现在活动价39.9&#xff0c;按照阶梯式增长&…

【LeetCode:1014. 最佳观光组合 + 思维题】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

解决启动docker desktop报The network name cannot be found的问题

现象 deploying WSL2 distributions ensuring main distro is deployed: checking if main distro is up to date: checking main distro bootstrap version: getting main distro bootstrap version: open \wsl$\docker-desktop\etc\wsl_bootstrap_version: The network name…

AP配置(leaderAP组网模式)

1.前言 由于业务需求&#xff0c;临时组建一个网络环境使用 网络设备&#xff1a;华为 AirEngine 5762-10、5762S-12 2.网络结构 参考文档&#xff0c;使用leader ap组网模式 使用一台5862S-12作为leaderAP&#xff0c;AP通电后默认是fit模式&#xff0c;需要进入修改 如果…

【html】基础(一)

本专栏内容为&#xff1a;前端专栏 记录学习前端&#xff0c;分为若干个子专栏&#xff0c;html js css vue等 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;js专栏 &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&#x1f69a; &am…

保障电气安全的电气火灾监控系统主要组成有哪些?

电气火灾是什么&#xff1f; 电气火灾一般是指由于电气线路、用电设备、器具以及供配电设备出现故障性释放的热能&#xff1a;如高温、电弧、电火花以及非故障性释放的能量&#xff1b;如电热器具的炽热表面&#xff0c;在具备燃烧条件下引燃本体或其他可燃物而造成的火灾&…

vue项目中——如何用echarts实现动态水球图

有时候UI的脑洞真的很大&#xff0c;总是设计出一些稀奇古怪的图形&#xff0c;但又不得不佩服他们的审美&#xff0c;确实还挺好看的。今天给大家介绍echarts如何实现动态水球图。如图所示&#xff1a; 实现步骤 一、引入 在vue页面中引入echarts&#xff0c;如未安装需要先…

【计算机网络强化】计网强化笔记

第一章 计算机网络体系结构 1.1 计算机网络概述 1.计算机网络由若干个节点和连接这些节点的链路组成 2. 3.计算机网络的组成 ①硬件、软件、协议 ②边缘部分和核心部分 ③通信子网和资源子网 4.电路交换、报文交换和分组交换 ①电路交换 分为三步&#xff1a;建立连接、…