Apache Paimon-实时数据湖

一、Apache Paimon是什么?

         Flink社区希望能够将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构优势进一步结合,推出新一代的 Streaming Lakehouse 技术,促进数据在数据湖上真正实时流动起来,并为用户提供实时离线一体化的开发体验。

        Flink 社区内部孵化了 Flink Table Store (简称 FTS )子项目,一个真正面向 Streaming 以及 Realtime的数据湖存储项目。

        2023年3月12日,FTS进入 Apache 软件基金会 (ASF) 的孵化器,改名为 Apache Paimon (incubating)。

        简单来说,Apache Paimon是一个流数据湖平台,兼容Apach Flink、Spark等主流计算引擎,支持流批一体处理、快速查询和性能优化,具有高速数据摄取、变更日志跟踪和高效的实时分析的能力。

        目前,24年已经在阿里巴巴集团内大规模应用,目前更新到1.0版本。

官网介绍

Apache Paimon 是一种 Lake 格式,支持使用 Flink 和 Spark 构建实时 Lakehouse 架构,用于流式和批处理操作。Paimon 创新性地结合了 Lake 格式和 LSM(日志结构合并树)结构,将实时流式更新引入 Lake 架构。

Paimon 提供以下核心功能:

  • 实时更新:
    • 主键表支持大规模更新的写入,具有非常高的更新性能,通常通过Flink Streaming进行。
    • 支持定义合并引擎,按您喜欢的方式更新记录。删除重复项以保留最后一行、部分更新、聚合记录或第一行,您决定。
    • 支持定义changelog-producer,为合并引擎的更新生成正确、完整的changelog,简化您的流分析。
  • 大量附加数据处理:
    • 附加表(无主键)提供大规模批处理和流处理能力。自动小文件合并。
    • 支持通过 z 顺序排序进行数据压缩以优化文件布局,并使用 minmax 等索引提供基于数据跳过的快速查询。
  • 数据湖功能:
    • 可扩展的元数据:支持存储Petabyte大规模数据集,支持存储大量分区。
    • 支持 ACID 事务、时间旅行和模式演变。

官网:https://paimon.apache.org/ 

Github:https://github.com/apache/incubator2、文件-paimon

二、Apache Paimon原理

1、底层存储

        Paimon采用LSM树(日志结构合并树)作为文件存储的数据结构,LSM树将文件组织成多个Sorted Run,Sorted Run由一个或多个数据文件组成,并且每个数据文件只属于一个Sorted Run。

        写入LSM树的新记录将首先缓存在内存中。当内存缓冲区满时,内存中的所有记录将被排序并刷新到磁盘。

        查询LSM树时,必须合并所有Sorted Run。当越来越多的记录写入LSM树时,Sorted Run的数量将会增加。由于查询LSM树需要将所有Sorted Run合并起来,太多Sorted Run将导致查询性能较差,甚至内存不足。为了限制Sorted Run的数量,我们必须偶尔将多个Sorted Run合并为一个大的Sorted Run。这个过程称为Compaction

        但是过于频繁的Compaction可能会导致写入速度变慢,这是查询和写入性能之间的权衡。

2、文件管理

        一张表的所​​有文件都存储在一个基本目录下。Paimon 文件采用分层的方式组织。下图说明了文件布局。从快照文件开始,Paimon 读取器可以递归访问表中的所有记录。

2.1 Snapshot(快照文件)

        所有快照文件都存储在snapshot目录中。

        快照文件是一个 JSON 文件,改文件包含了:

  • 正在使用的架构文件

  • 包含此快照所有更改的清单

快照可以捕获表在某个时间点的状态。用户可以通过最新的快照访问表的最新数据。通过时间旅行,用户还可以通过较早的快照访问表的先前状态。

--->类似Hadoop中的镜像文件和编辑日志

2.2 Manifest Files(清单文件)

        所有的清单列表(manifest list)和清单文件(manifest file)都存储在manifest目录中。

        清单列表(manifest list)是清单文件名(manifest file)的列表。

        清单文件(manifest list)是包含有关 LSM 数据文件和变更日志文件的变更的文件。例如,在相应的快照中创建了哪个 LSM 数据文件以及删除了哪个文件。

2.3 DataFile(数据文件)

        数据文件按分区分组。目前,Paimon 支持使用 parquet(默认)、orc 和 avro 作为数据文件的格式。(avro是行存储、parquet和orc是列存储)

2.4 Partition(分区)

        Paimon 采用与 Apache Hive 相同的分区概念来分离数据。分区是一种可选方法,可根据日期、城市和部门等特定列的值将表划分为相关部分。每个表可以有一个或多个分区键来标识特定分区。通过分区,用户可以有效地对表中的一段记录进行操作。

2.5 一致性保证

        Paimon 写入器使用两阶段提交协议,以原子形式将一批记录提交到表中。每次提交在提交时最多产生两个快照。这取决于增量写入和压缩策略。如果仅执行增量写入而不触发压缩操作,则只会创建增量快照。如果触发了压缩操作,则会创建增量快照和压缩快照。

        对于同时修改表的任何两个writer,只要他们不修改同一个分区,他们的提交就可以并行发生。如果他们修改同一个分区,则只能保证快照隔离。也就是说,最终的表状态可能是两次提交的混合,但不会丢失任何更改。有关更多信息,请参阅专用压缩作业。

总结:Paimon通过LSM树(日志结构合并树)和列式存储格式(parquet/orc)实现高查询。

3、主要应用场景

3.1 Flink CDC将数据引入数据湖

        Paimon对此进行优化,可以一键摄取整个数据库,引入数据湖,大大降低了架构的复杂性,同时还提供灵活的更新选项,允许应用特定列或不用类型的聚合更新。(支持更新的数据入湖

3.2 构建流式数据管道

        PAIMON可用于构建完整的流式数据管道,其主要功能包括:生成ChangeLog,允许流式读取访问完全更新的记录,从而更轻松地构建强大的流式数据管道。

        PAIMON也正在发展为具有消费者机制的消息队列。最新版本引入了变更日志的生命周期管理,可让用户定义它们的保留时间,类似于 Kafka(例如,日志可以存储七天或更长时间)。这创建了一个轻量级、低成本的流媒体管道解决方案。        

3.3 超快速OLAP查询

        虽然前两个用例可确保实时数据流,但 PAIMON还支持高速 OLAP 查询来分析存储的数据。通过结合LSM和Index,PAIMON 可以实现快速数据分析。其生态系统支持Flink、Spark、StarRocks、Trino等多种查询引擎,都可以高效查询PAIMON中存储的数据。

4、实践案例

案例一:提升实时数据分析效率

问题描述:一家全球大型零售客户,其面临的挑战是如何在门店和电商平台并行的人群中进行实时的用户行为分析和个性化推荐。传统的数据分析架构下,系统无法高效处理大规模实时数据,导致用户体验不佳,推荐系统延迟高。

解决方案:通过引入Apache PAIMON,实时同步用户的购物行为和库存数据,结合Flink进行流式数据处理,客户能够基于最新数据生成个性化推荐。这不仅提升了用户的购物体验,还降低了基础设施成本。

案例二:构建可靠的实时业务监控

问题描述:一家零售客户,其供应链管理系统随着业务规模扩展和复杂性增加,运营与流程管理部门亟需实现对各类业务流程的实时监控,以确保流程的稳定性与高效性。然而,现有系统架构仅支持离线数据,无法满足实时业务需求。

解决方案:通过引入PAIMON数据湖,基于Aliyun EMR + OSS构建了一个实时数据湖。该系统通过Flink和Flink CDC实时收集多个数据源的数据,结合OSS对象存储,确保了数据的可查询性和分层复用。同时在分析层结合Doris,解决了OLAP分析时效性低的问题,提高了报表和监控系统的时效性。

--案例来自Artefact

三、Paimon和Flink神魔关系

        Paimon是做湖上的实时化处理,所以他是从Flink社区诞生的,是一种流批统一的数据湖存储格式,他能够与Flink紧密配合,实现实时数据湖。为了更好的了解Paimon,我们要求清楚其他的存储格式Iceberg、Hudi是什么,和Paimon有什么关系。

Apache Hudi、Apache Iceberg 、Apache Paimon都是面向大数据湖表格式存储管理框架

  • Hudi,发展最早,服务生态齐全,但是参数很多,开发要求较高,维护性差,面向批处理
  • Iceberg,表简单,没有很多表引擎,主要面向离线生态,对实时的更新很慢
  • Paimon,实时很快,流批一体

四、Paimon的好处

解决Kafka不可查的问题:以前使用Kafka做中间件来进行流处理,但是kafka是不可查的,所以最后还需要一个可以查询的引擎,比如把数据写入StarRocks上进行查询。但是Paimon作为一个湖格式,可以批写批读,也可以流写流读,它把整条streaming链路建立起来,每一层都是事实可查的,架构能够完全实现流批一体。

支持更新的数据入湖: 通过FlinkCDC,可以一键摄取整个数据库,引入数据湖,大大降低了架构的复杂性,同时还提供灵活的更新选项,允许应用特定列或不用类型的聚合更新。

参考文章:

流数据湖平台Apache Paimon(一)概述-阿里云开发者社区

Apache PAIMON:实时数据湖技术框架及其实践

【全网首发】Apache Paimon大厂面试必备系列-基础篇

Apache Paimon大厂面试题必备-进阶篇(一)

Paimon助力数据湖仓架构实时化升级-阿里云开发者社区

Flink+Paimon实时数据湖仓实践分享-CSDN博客

数据湖Iceberg、Hudi和Paimon比较_apache paimon-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【计算机视觉】单目深度估计模型-Depth Anything-V2

概述 本篇将简单介绍Depth Anything V2单目深度估计模型,该模型旨在解决现有的深度估计模型在处理复杂场景、透明或反射物体时的性能限制。与前一代模型相比,V2版本通过采用合成图像训练、增加教师模型容量,并利用大规模伪标签现实数据进行学…

jenkins入门12-- 权限管理

Jenkins的权限管理 由于jenkins默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三发插件来支持角色的配置,我们使用Role-based Authorization Strategy 插件 只有项目读权限 只有某个项目执行权限

【Microi吾码】开源力量赋能低代码创新,重塑软件开发生态格局

我的个人主页 文章专栏:Microi吾码 一、引言 在当今数字化浪潮汹涌澎湃的时代,软件开发的需求呈现出爆发式增长。企业为了在激烈的市场竞争中脱颖而出,不断寻求创新的解决方案以加速数字化转型。传统的软件开发方式往往面临着开发周期长、技…

HTB:Bank[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 提取出靶机TCP开放端口 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用curl对域名进行访问…

操作手册:集成钉钉审批实例消息监听配置

此文档将记录在慧集通平台怎么实现钉钉审批实例结束或发起或取消时,能够实时的将对应的实例数据抓取出来送入第三方系统 集成平台配置 1、配置中心库,存储钉钉发送的消息,可以忽略,若不配置,则钉钉的消息将不再记录到…

【C++】B2118 验证子串

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目概述题目描述输入格式输出格式输入输出样例样例 1样例 2 题目提示 💯解决方案分析初步分析与思路 💯我的代码实现与分析代码回顾实现逻辑与优缺…

68.基于SpringBoot + Vue实现的前后端分离-心灵治愈交流平台系统(项目 + 论文PPT)

项目介绍 本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述心灵治愈交流平台的当前背景以及系统开发的目的,后续章节将严格按照软件开发流程,对系统进…

【分布式缓存】一致性Hash原理剖析,一致性Hash与Hash的区别(详解)

文章目录 Hash算法Hash算法的缺陷一致性Hash算法一致性Hash存储规则一致性Hash解决Hash的缺陷问题一致性Hash的偏斜问题一致性哈希在实际中的应用总结 更多相关内容可查看 假设有一个场景:有三万张图片,有三台服务器S0,S1,S2 要求…

Clisoft SOS与CAD系统集成

Clisoft SOS与CAD系统集成 以下内容大部分来自官方文档,目前只用到与Cadence Virtuoso集成,其他还未用到,如有问题或相关建议,可以留言。 与Keysight ADS集成 更新SOS客户端配置文件sos.cfg,以包含支持ADS的模板&am…

Java-数据结构-链表-高频面试题(1)

在上一篇文章中,我们学习了链表中的"单向链表",但学可不代表就是学会了,能够运用链表的地方比比皆是,解题方法也是层出不穷,今天就让我们巩固一下"单向链表"的知识吧~ 第一题:相交链表…

JVM实战—OOM的定位和解决

1.如何对系统的OOM异常进行监控和报警 (1)最佳的解决方案 最佳的OOM监控方案就是:建立一套监控平台,比如搭建Zabbix、Open-Falcon之类的监控平台。如果有监控平台,就可以接入系统异常的监控和报警,可以设置当系统出现OOM异常&…

照片做成图书小程序开发制作介绍

照片做成图书小程序系统,主要是让用户直接通过小程序选择需要做成书的类型和照片排版布局模板,以及上传照片的数量。照片上传完成后,生成模板图片样式进行预览或编辑修改。修改完成全部保存。保存后生成完整的照片书进行预览没问题&#xff0…

云商城--业务+架构学习和环境准备

云商城业务架构学习和环境准备 B2B:Business to Business,交易双方的身份都是商家,也就是商家将商品卖给商家,类似采购、批发类购物,国内代表性网站阿里巴巴批发网 C2C:Customer to Customer,…

Elasticsearch:Lucene 2024 年回顾

作者:来自 Elastic Chris Hegarty 2024 年对于 Apache Lucene 来说又是重要的一年。在本篇博文中,我们将探讨主要亮点。 Apache Lucene 在 2024 年表现出色,发布了许多版本,包括三年来的首次重大更新,其中包含令人兴奋…

基于LabVIEW的BeamGage自动化接口应用

设置 National Instruments LabVIEW可执行程序需要被配置为使用.NET 4框架。.NET允许自定义可执行程序的运行方式。可通过以下方式实现: 在LabVIEW安装目录中创建一个名为LabVIEW.exe.config的文本文件(例如:C:\Program Files\National Ins…

卸载干净 IDEA(图文讲解)

目录 1、卸载 IDEA 程序 2、注册表清理 3、残留清理 1、卸载 IDEA 程序 点击屏幕左下角 Windows 图标 -> 设置-控制面板->intellij idea 勾选第一栏 Delete IntelliJ IDEA 2022.2 caches and local history,表示同时删除 IDEA 本地缓存以及历史。 Delete I…

李宏毅机器学习课程笔记02 | 机器学习任务攻略General Guide

第一步:分析loss on training data 先检查在训练数据上模型是否很好的学习 情况1:如果在训练集上,loss很大,说明在训练资料上没有训练好 可能性1:设置的模型太简单了,模型存在model bias模型偏差&#x…

【C++】19.多态

文章目录 1. 多态的概念2. 多态的定义及实现2.1 多态的构成条件2.1.1 实现多态还有两个必须重要条件:2.1.2 虚函数 (Virtual Function)定义:特性:示例代码:代码分析1. 类定义部分2. 主函数部分运行结果 重点讲解1. 虚函数的作用2.…

光伏仿真与设计系统应用架构深度剖析

在光伏产业蓬勃发展的时代背景下,绿虫光伏仿真与设计系统成为推动其高效发展的核心力量。其应用架构涵盖多个关键步骤,每个环节都紧密相扣,共同构建起精准且高效的设计体系。 气象分析作为开篇之笔,起着基石般的重要作用。系统全…

进程间通讯

简介: 进程间通讯方式有: 1.内存映射(mmap): 使用mmap函数将磁盘空间映射到内存 2.管道 3.信号 4.套接字(socket) 5.信号机制 通过进程中kill函数,去给另一个函数发送信号&a…