Apache PAIMON 学习

news2025/1/15 7:34:59

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

数据湖不仅仅是一个存储不同类数据的技术手段,更是提高数据分析效率、支持数据驱动决策、加速AI发展的基础设施。

新一代实时数据湖技术,Apache PAIMON兼容Apache Flink、Spark等主流计算引擎,并支持流批一体化处理、快速查询和性能优化,成为加速AI转型的重要工具。

Apache PAIMON是一个支持大规模实时数据更新的存储和分析系统,通过 LSM 树(日志结构合并树)和列式存储格式(如 ORC/Parquet)实现高效查询。它与 Flink 深度集成,可整合 Kafka、日志、业务数据库的变更数据,支持批流一体处理,实现低延迟、实时更新和快速查询。

相比其他数据湖框架(如 Apache Iceberg 和 Delta Lake),PAIMON独特地提供了对批流一体化的原生支持,不仅能高效处理批量数据,还能对变更数据(如 CDC)实时响应。它也兼容多种分布式存储系统(如 OSS、S3、HDFS),并集成了 OLAP 工具(如 Spark、StarRocks、Doris),确保安全存储与高效读取,为企业的快速决策和数据分析提供灵活支持。

PAIMON主要技术场景

1. Flink CDC 将数据引入数据湖

PAIMON经过优化,使这个过程更简单、更高效。通过一键摄取,便可将整个数据库引入数据湖,从而大大降低架构的复杂性。它支持实时更新和低成本快速查询。此外,它还提供灵活的更新选项,允许应用特定列或不同类型的聚合更新。

2. 构建流式数据管道

PAIMON可用于构建完整的流式数据管道,其主要功能包括:

生成ChangeLog,允许流式读取访问完全更新的记录,从而更轻松地构建强大的流式数据管道。

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

3. 超快速 OLAP 查询

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

参考:Paimon助力数据湖仓架构实时化升级-阿里云开发者社区
数据架构的存储演进

Data LakeHouse是Lake到Warehouse的完美结合。它的基本含义是一个文件或者对象存储,可以存储任何你想要的任何东西。包括结构化数据、非结构化数据,json,其中非结构化数据包括图片、视频、音频之类的数据,Data Lake是一个非常通用的、非常粗糙的、非常底层的底层存储。


近几年诞生湖格式的东西,包括Iceberg、Hudi、Delta湖格式的东西,它通过文件的重新定义,把文件管理起来,管理的就不仅是一个目录,它管目录下每一个文件,它通过slap sort、manifest file的机制把每个文件的引用管理起来,这张表就具有版本的效果,也具有更细粒度控制的效果。

举例说明,把文件管起来之后ACID的能力,可以避免类似的目录,也可以有一些基于文件的data skipping的,也可以支撑delete update merge into细粒度的操作。最后也可以支持时间旅行包括回滚、Branch, Tag的能力。

Paimon实时数据湖

Paimon实时数据湖的出发点是Streaming加实时。数据湖格式上做Streaming的处理,Hive公开的每个引擎都能进行读写格式,它是一个非常open的格式,这里把它叫做shared database storage for batch processing。在批处理上一个被所有计算引擎share的格式,Iceberg 包括Hudi ,Delta在Hive的基础上演化出来的更进一步的ACID的处理,这里把Iceberg叫做shared databasestorage for batch processing,像数据仓库更像数据库的存储,有更进一步的能力。

Paimon出发点是在Iceberg基础上这些东西还不够,最大能给业务带来效果的是streaming,是实时化,是时效性。所以Paimon不仅是batch processing包括batch processing, streaming procession,olap processing,所以它是结合湖格式加LSM技术,把时效性带到数据湖。

Paimon的生态体系结构已经非常的广,底下基于HDVS,OSS或者stream的存储介质。在上面基于文件的格式ORC,包括阿里的ORC,parquet。左边是CDCingest各种数据源入湖到Paimon中。右边是它支持各种各样的sacred query的computer engine,包括Flink流的,Flink包括批的Spark StarRocks,包括一系列的社区的计算引擎,最新的版本也提出Paimon Python API,通过Paimon Python API解锁机器学习,来自包括rag,Python一系列的生态,包括通过error格式的转换。支撑包括pandas之类的计算框架。

Paimon最开始的名字叫Flink Table store。Paimon不仅是一个Flink存储,它是一个通用,公开,被共享的湖格式。对接的包括Flink流计算Spark StarRocks等一系列的引擎,预计在11月份发布1.0版本,预计Paimon在批,在流,在Olap已经达到非常完善的程度,在1.0当中会引入来自AI相关的集成,让Paimon成为真正能处理非结构化数据的数据湖格式。
最新Paimon发布0.9版本是一个功能非常完善的一个版本,补充完善有缺陷的futures,并且核心增强了包括victor ,组件化letive的查询对接来自StarRocks的C++的查询,也兼容Spark生态,可以通过Spark生态查询Paimon的数据,最后优化对象存储的文件,包括文件缓存 文件格式

数据湖实时流式处理

实时流式处理让业务的时效性加强,从天级的时效性降低到分钟级。基于Paimon数据湖的VP的处理,成本不会增加特别多。成本可控的情况下,时效性增加,时延降低,整体呈现出一套批流完全一体的存储计算架构。以前用Kafka中间来做流处理,因为Kafka不可查,所以anyway最后需要可以查询的引擎,比如需要把数据写到StarRocks上,StarRocks才可查。Paimon作为一个湖格式,它是可以批写批读,也可以流写流读,它把整条streaming链路建立起来,每一层都实时可查。架构能做到完全的流批一体,不是流批割裂的两套架构。

Paimon的能力有三个,第一个是它可以支持更新的数据入湖。第二个特性是能流读流写。流读流写不是简单的把数据流读流写,可以给Paimon声明一张图组件表,组件表就可以表现的像MYSQL,也可以实时的流式的更新数据,组件表也能实时的产生Change log给下游的消费,能做到非常准确的类似number架构,CPA架构。因为它是基于存储来产生Change log,它能做到最正确的计算,所以在很多场景当中,它能做到流一份数据沉淀下来,不用批写批读,做批的刷新。最后一个场景是每一层都是可以被包括StarRocks包括Spark引擎实时查询。Paimon针对这些引擎做非常多的优化,能保证查询性能不弱于正常的批查询。

第一个场景就数据库CDC入湖,可以通过Flink CDC,各种connector包括mysql CDC包括mongo DB的CDC包括OCEANBASE一系列的CDC的能力。用Paimon包括社区Paimon提供的Paimon CDC的入湖方式,可以用最新的一个Flink CDC 3.1基于young的入湖方式定义数据集成的数据传输的脚本链路。schema evolution ,schema跟着变来自源头的数据schema变,下面的Paimon表的schema也跟着变,也可以用类似整库同步的能力进一步节省资源,降低运维难度。
第二个是湖上的全链路流式ETL,定义Paimon的merge engine,可以定义partial-update,也可以定义Aggregation的merge engine。基于把计算存入到存储的技术,也可以通过Paimon取代类似join的部分列更新,也可以基于Paimon定义聚合表,整体写入Paimon后定义Paimon merge engine,之后也可以定义Change log producer让Paimon表实时的产生Change log,但是产生的Change log是需要不小的代价。
最后是湖上的Olap的加速,分为两个部分,第一个部分是实时数据的Olap。可以定义一个组件表,它接受上游数据的实时更新。实时更新的过程当中,可以通过StarRocks类似的引擎实时的查询,所以在社区推出一个组件表的deletion victor模式,基于deletion victor模式,它可以让存储本身和c++向量化更好的集成,可以让查询性能得到数倍的提升。离线数据直接Olap,可能会扫描全表的数据,Paimon也支持对离线数据做z-order排序。做z-order排序之后,在查询的时候就可以基于排序的range过滤大量的文件,Paimon在社区有文件索引。通用文件索引支持Bloom Filter,也支持最新的Bitmap进一步过滤不需要的文件。加强Olap的性能。

数据湖非结构化处理
接触到数据湖格式之后,会发现数据湖是一个结构化的处理,它是一个表,需要定义字段。Paimon在最新的版本当中也会推出Paimon object Table,希望通过Object Table管理非简化的数据,包括在OOS或者HDFS上的图片,视频,文件,音频之类的文件。Object Table方式通过一个视图,不操作这些文件,相当于是在后台建立文件的索引。把这些文件的原数据写到数据湖当中,通过这样的结构化视图就可以查询到Object Table,对一个目录或者多个目录的原数据的映射。拿到这些原数据之后就可以通过包括pySpark ,Flink SQL ,Spark SQL 等,通过这种结构化的处理,读表知道有哪些文件,这些文件的文件大小可以做一些过滤,也可以把这些文件读出来做一些处理,所以通过这样的方式把非结构化和结构化的SQL的处理,或者结构化的计算引擎的处理结合到一起,让整个结构化的处理更简单。可以把这些非结构化的数据通过结构化的方式管理起来,包括权限管理对接到正常的数仓的权限管理当中。
在Flink当中,在SQL当中也支持Model的一些处理,包括Model的预测,案例是假如根据training数据训练出Model,可以在Flink SQL中定义Model,然后也可以在SQL中定义Object Table映射到目录中的文件,通过纯SQL的调用,通过Model预测针对object数据做预测,通过纯SQL的方式产出一个模型预测数据处理的效果。通过Paimon的object table的方式可以把这套体系融入到SQL的处理当中,融入到传统的大数据计算的分布式处理当中,是案例的简单的SQL处理,可以create Model,create object table,通过predict模型预测的函数,做模型的预测处理。
Paimon可以管Model,包括非结构化数据。SQL的结构化处理模型预测也可以得到结果,整个非结构化数据得到数据版本和管理,从而可以得到学员的依赖管理。也可以把结果数据和其他结构化数据进行join,以及进行联合的计算。

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

在 Flink 实时数据开发中,对于依赖大量状态 state 的场景,如长周期的累加指标计算、回撤长历史数据并更新等,使用实时数仓作为中间存储来代替 Flink 的内部状态 state 是非常有必要的。
 

Apache Paimon是一种流批统一的数据湖存储格式,结合 Flink 可以构建流批处理的实时湖仓一体架构。Paimon 具有实时更新的能力(可应用于对时效性要求不太高的场景,如 1-5 分钟),其主键表支持大规模更新写入,具有非常高的更新性能,同时也支持定义合并引擎,按照自定义的方式更新记录。

Paimon 底层使用 OSS/HDFS 等作为存储,同时数据文件以 LSMtree 的格式进行组织,具有更优的实时数据更新能力和完整的流处理能力。


对象存储服务(Object Storage Service)它是一种海量、安全、低成本、高可靠的云存储服务。适用于存储各种类型的非结构化数据,比如图片、视频、文档等。

 

1. 低成本、可扩展性:实时数仓产品也可以作为 flink 的中间存储,比如 hologres,但是 Paimon 的存储成本约为其的 1/9(通过查询官网,OSS 的存储为 0.12 元/GB/月,Hologres 为 1 元/GB/月)。同时数据湖相比于数据仓库可以与更多的大数据引擎(Hive/Spark/Trino 等等)兼容,解决数据孤岛和数据冗余存储的问题。

2. 实时性能:相比于其他的数据湖产品,Paimon 是天然面向 Flink 设计而诞生的,相比于 hudi(面向 Spark 批处理设计)、Iceberg 等,Paimon在与 Flink 结合具有更优的处理大批量数据的 upsert 能力,同时数据更新时效性最短可支持到 1 分钟,且性能稳定。

使用 Paimon 作为中间存储进行维表 JOIN,可以解决 Flink 内部状态 state 成本高、不可重启、存储周期短等限制,从而满足复杂实时场景的数据开发需求,同时这些中间存储结果也可以通过流/批的形式被 ODPS/Hologres 等大数据引擎消费,实现数据统一

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

音视频入门基础:RTP专题(1)——RTP官方文档下载

一、引言 实时传输协议(Real-time Transport Protocol,简写RTP)是一个网络传输协议,由IETF的多媒体传输工作小组1996年在《RFC 1889》中公布的。 RTP作为因特网标准在《RFC 3550》有详细说明。而《RFC 3551》详细描述了使用最小…

【Vim Masterclass 笔记13】第 7 章:Vim 核心操作之——文本对象与宏操作 + S07L28:Vim 文本对象

文章目录 Section 7:Text Objects and MacrosS07L28 Text Objects1 文本对象的含义2 操作文本对象的基本语法3 操作光标所在的整个单词4 删除光标所在的整个句子5 操作光标所在的整个段落6 删除光标所在的中括号内的文本7 删除光标所在的小括号内的文本8 操作尖括号…

LiveGBS流媒体平台GB/T28181常见问题-没有收到视频流播放时候提示none rtp data receive未收到摄像头推流如何处理?

LiveGBS没有收到视频流播放时候提示none rtp data receive未收到摄像头推流如何处理? 1、none rtp data receive2、搭建GB28181视频直播平台 1、none rtp data receive LiveSMS 收不到下级推流 首先需要排查服务器端 UDP & TCP 30000-30249 端口是否开放其次排…

使用Docker模拟PX4固件的无人机用于辅助地面站开发

前言 最近在制作鸿蒙无人机地面站,模仿的是QGroundControl,协议使用mavlink,记录一下本地模拟mavlink协议通过tcp/udp发送 废话不多说直接上命令 1.启动docker的桌面端 启动之后才能使用docker命令来创建容器 docker run --rm -it jonas…

【Docker】保姆级 docker 容器部署 MySQL 及 Navicat 远程连接

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. docker 容器部署 MySQL1.1 拉取mysql镜像1.2 启动容器1.3 进入容器1.4 使用 root 用户登录 2. Navicat 连…

【大数据】机器学习-----线性模型

一、线性模型基本形式 线性模型旨在通过线性组合输入特征来预测输出。其一般形式为: 其中: x ( x 1 , x 2 , ⋯ , x d ) \mathbf{x}(x_1,x_2,\cdots,x_d) x(x1​,x2​,⋯,xd​) 是输入特征向量,包含 d d d 个特征。 w ( w 1 , w 2 , ⋯ ,…

装备制造行业(复杂机械制造)数字化顶层规划 - 汇报会

行业业务特点: 尊敬的各位管理层: 大家好!今天我将向大家汇报装备制造企业数字化战略的顶层规划设计。在当今数字化浪潮下,装备制造企业面临着转型升级的迫切需求,数字化战略的制定与实施对于提升企业竞争力、实现可持…

深度探索C++20协程机制

#include <iostream> #include <coroutine>class CoroTaskSub { public://编译器在处理协程函数时是通过其返回类型【即协程接口类型】&#xff0c;确定协程的承诺类型和协程句柄类型struct promise_type;using CoroHdl std::coroutine_handle<promise_type>…

linux手动安装mysql5.7

一、下载mysql5.7 1、可以去官方网站下载mysql-5.7.24-linux-glibc2.12-x86_64.tar压缩包&#xff1a; https://downloads.mysql.com/archives/community/ 2、在线下载&#xff0c;使用wget命令&#xff0c;直接从官网下载到linux服务器上 wget https://downloads.mysql.co…

Java Stream实现【Int / Long / Double / Bigdecimal】累计求和

文章目录 背景实现方案案例素材Int类型求和Long 类型求和Double 类型求和BigDecimal 类型求和 背景 在项目开发中经常会使用到数据统计&#xff0c;Java中有求和的方法&#xff0c;可使用Java的Stream工作流实现&#xff0c;记录下来&#xff0c;方便备查。 实现方案 可使用…

OFD文件纯前端查看解决方案

文章目录 ofd.js原有bug修复1、ofd格式文档打开报错2、签章信息不显示 效果展示源码下载 使用前请查看免责声明 ofd.js原有bug修复 1、ofd格式文档打开报错 原因分析&#xff1a; 文档打开时会解析所用到的字体信息&#xff0c;如果字体不在ofd.js预设字体时&#xff0c;会触…

使用 Docker 部署 Java 项目(通俗易懂)

目录 1、下载与配置 Docker 1.1 docker下载&#xff08;这里使用的是Ubuntu&#xff0c;Centos命令可能有不同&#xff09; 1.2 配置 Docker 代理对象 2、打包当前 Java 项目 3、进行编写 DockerFile&#xff0c;并将对应文件传输到 Linux 中 3.1 编写 dockerfile 文件 …

二手车交易系统的设计与实现(代码+数据库+LW)

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统二手车交易信息管理难度大&#xff0c;容错率低&#xf…

抖音ip属地没有手机卡会显示吗

在数字时代&#xff0c;社交媒体平台如抖音已成为人们日常生活的重要组成部分。随着抖音等应用对用户体验和隐私保护的不断优化&#xff0c;IP属地显示功能逐渐走进大众视野。这一功能旨在提高网络环境的透明度&#xff0c;打击虚假信息和恶意行为。然而&#xff0c;对于没有手…

springMVC---resultful风格

目录 一、创建项目 pom.xml 二、配置文件 1.web.xml 2.spring-mvc.xml 三、图解 四、controller 一、创建项目 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi…

[Git] 深入理解 Git 的客户端与服务器角色

Git 的一个核心设计理念是 分布式&#xff0c;每个 Git 仓库都可以既是 客户端&#xff0c;也可以是 服务器。为了更好地理解这一特性&#xff0c;我们通过一个实际的 GitHub 远程仓库和本地仓库的场景来详细说明 Git 如何在客户端和服务器之间协作&#xff0c;如何独立地进行版…

网络安全-RSA非对称加密算法、数字签名

数字签名非常普遍&#xff1a; 了解数字签名前先了解一下SHA-1摘要&#xff0c;RSA非对称加密算法。然后再了解数字签名。 SHA-1 SHA-1&#xff08;secure hash Algorithm &#xff09;是一种 数据加密算法。该算法的思想是接收一段明文&#xff0c;然后以一种不可逆的方式将…

了解 ASP.NET Core 中的中间件

在 .NET Core 中&#xff0c;中间件&#xff08;Middleware&#xff09; 是处理 HTTP 请求和响应的核心组件。它们被组织成一个请求处理管道&#xff0c;每个中间件都可以在请求到达最终处理程序之前或之后执行操作。中间件可以用于实现各种功能&#xff0c;如身份验证、路由、…

【三维数域】三维数据调度-负载均衡和资源优化

在处理大规模三维数据时&#xff0c;负载均衡和资源优化是确保系统高效运行、提供流畅用户体验的关键。这两者不仅影响到系统的性能和稳定性&#xff0c;还直接决定了用户交互的质量。以下是关于如何在三维数据调度中实现有效的负载均衡和资源优化的详细探讨。 一、负载均衡 负…

AI大模型开发—1、百度的千帆大模型调用(文心一言的底层模型,ENRIE等系列)、API文档目的地

文章目录 前言一、千帆大模型平台简介二、百度平台官网初使用1、平台注册和使用2、应用注册 并 申请密钥3、开启千帆大模型 API调用a、API文档b、 前言 本章旨在为读者奉献一份实用的操作指南&#xff0c;深入探索如何高效利用百度千帆大模型平台的卓越功能。我们将从账号注册…