Apache Paimon-实时数据湖

news2025/1/8 3:47:25

一、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博客

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

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

相关文章

为什么相关性不是因果关系?人工智能中的因果推理探秘

目录 一、背景 (一)聚焦当下人工智能 (二)基于关联框架的人工智能 (三)基于因果框架的人工智能 二、因果推理的基本理论 (一)因果推理基本范式:因果模型&#xff0…

AI Development Notes 1 - introduction with the OpenAI API Development

Official document:https://platform.openai.com/docs/api-reference/chat/create 1. Use APIfox to call APIs 2.Use PyCharm to call APIs 2.1-1 WIN OS.Configure the Enviorment variable #HK代理环境,不需要科学上网(价格便宜、有安全风险&#…

路由组件与一般组件的区别

路由组件与一般组件的区别 1. 基本概念 1.1 路由组件 路由组件是指通过路由规则映射的组件,通常放在 pages 或 views 文件夹中。 1.2 一般组件 一般组件是指通过 import 导入后直接使用的组件,通常放在 components 文件夹中。 2. 主要区别 2.1 存…

K8s高可用集群之Kubernetes集群管理平台、命令补全工具、资源监控工具部署及常用命令

K8s高可用集群之Kubernetes管理平台、补全命令工具、资源监控工具部署及常用命令 1.Kuboard可视化管理平台2.kubectl命令tab补全工具3.MetricsServer资源监控工具4.Kubernetes常用命令 1.Kuboard可视化管理平台 可以选择安装k8s官网的管理平台;我这里是安装的其他开…

【C++】18.继承

文章目录 1.继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1定义格式1.2.2继承关系和访问限定符1.2.3继承基类成员访问方式的变化 1.3 继承类模板 2.基类和派生类对象赋值转换3.继承中的作用域3.1 隐藏规则:3.2 考察继承作用域相关选择题 4.派生类的默认成员函数4…

51单片机——8*8LED点阵

LED 点阵的行则为发光二极管的阳极,LED 点阵的列则为发光二极管的阴极 根据 LED 发光二极管导通原理,当阳极为高电平,阴极为低电平则点亮,否则熄灭。 因此通过单片机P0口可控制点阵列,74HC595可控制点阵行 11 脚 SR…

FastDeploy部署paddlecls分类模型(windows)

目录 写在前面 总体步骤 C SDK编译库 方式1:编译安装 方式2:下载预编译库 准备模型、文件、代码和数据 模型文件类型 samples代码 待预测图像 使用 FastDeploy C SDK 将cpp源码编译为exe 编写cpp代码 cpp代码编译exe 运行可执行程序exe 将…

电脑如何无线控制手机?

想在电脑上无线控制手机,需要用到Total Control控制软件,具体步骤如下: 1、首先我们在电脑上安装上控制软件Total Control并打开。 2、开启手机USB调试和ADB仅充电模式。 3、手机电脑均连接上相同局域网。 4、连接(首次使用需要用手机U…

C++ Qt练习项目 QChar功能测试

个人学习笔记 代码仓库 GitCode - 全球开发者的开源社区,开源代码托管平台 新建项目 设计UI 1、拖入group box去掉名字 2、拖入2个LineEdit 3、拖入两个Label 4、拖入两个PushButton 5、点栅格布局 1、拖入GroupBox 2、拖入4个PushButton 3、点栅格布局 1、拖入GroupBo…

QT c++ 样式 设置 标签(QLabel)的渐变色美化

上一篇文章中描述了按钮的纯色&#xff0c;本文描述标签的渐变色美化。 1.头文件 #ifndef WIDGET_H #define WIDGET_H #include <QWidget> //#include "CustomButton.h"#include <QVBoxLayout> #include <QLinearGradient> #include <QLabel…

【C++面向对象——输入输出流】处理二进制文件(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 一、流类库中常用的类及其成员函数 二、标准输入输出及格式控制 三、文件的应用方法&#xff08;二进制文件、文本文件&#xff09; 编程要求 实验步骤 通关代码 测试结果 任务描述 本关任务&#xff1a; 用二进制方式打开指定的…

基于大数据爬虫+Python+数据可视化大屏的慧游数据爬虫与推荐分析系统(源码+论文+PPT+部署文档教程等)

博主介绍&#xff1a;**CSDN毕设辅导第一人、**全网粉丝50W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流 **技术范围&#xff1a;**S…

Linux Shell 脚本编程基础知识篇—awk的条件判断(3)

ℹ️大家好&#xff0c;我是练小杰&#xff0c;今天周五了&#xff0c;又是一周过去了&#x1f606; 本文是有关Linux shell脚本编程的awk命令的条件语句&#xff0c;后续我会不断增加相关内容 ~~ 回顾:【awk字符串函数和内置变量】 更多Linux 相关内容请点击&#x1f449;【Li…

MITRE ATTCK 简介:初学者指南

网络安全已成为当今数字世界的一个关键问题。随着网络威胁日益复杂&#xff0c;组织需要一种结构化的方法来理解和应对这些风险。这就是 MITRE ATT&CK 框架发挥作用的地方。如果您是网络安全新手或刚刚开始探索威胁分析和缓解&#xff0c;本指南将为 MITRE ATT&CK 提供…

生物医学信号处理--绪论

前言 参考书籍&#xff1a;刘海龙&#xff0c;生物医学信号处理&#xff0c;化学工业出版社 生物医学信号分类 1、由生理过程自发或者诱发产生的电生理信号和非电生理信号 • 电生理信号&#xff1a;ECG/心电、EEG/脑电、EMG/肌电、 EGG/胃电、 EOG/眼电 • 非电生理信号&am…

理解 Tomcat 架构与自定义实现

前言 Tomcat 是一个轻量级的 Web 容器&#xff0c;被广泛应用于 Java Web 开发中。通过它&#xff0c;我们可以轻松地部署和运行 Web 应用。在本文中&#xff0c;我们将深入分析 Tomcat 的核心架构&#xff0c;同时结合一段代码&#xff0c;手动实现一个简化的 Tomcat 服务&am…

怎样修改el-table主题样式

起因&#xff1a;el-table有主题样式&#xff0c;部分需要单独设置 环境&#xff1a;ideanodejs插件谷歌浏览器 第一步&#xff1a;找到scss文件&#xff1a; 谷歌浏览器打开表格页面&#xff0c;ctrlshifti打开开发者工具&#xff0c;点击后鼠标移动到表格单元格上单击一下…

模型 九屏幕分析法

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。九屏幕法&#xff1a;全方位分析问题的系统工具。 1 九屏幕分析法的应用 1.1 新产品研发的市场分析 一家科技公司计划开发一款新型智能手机&#xff0c;为了全面评估市场潜力和风险&#xff0c;他们…

CSS 学习之 padding 与图形绘制

padding 属性和 background-clip 属性配合&#xff0c;可以在有限的标签下实现一些 CSS 图形绘制效果&#xff0c;我这里举两个小例子&#xff0c;重在展示可行性。 例 1:不使用伪元素&#xff0c;仅一层标签实现大队长的“三道杠”分类图标效果。此效果在移动端比较常见&…

AI在电子制造中的应用:预测质量控制

一、 电子制造中存在的质量问题 电子制造过程中&#xff0c;由于生产工艺复杂、材料种类繁多、生产环境要求高等因素&#xff0c;可能会出现各种质量问题。 常见质量问题如下&#xff1a; 1. 空焊 原因&#xff1a;锡膏活性较弱、钢网开孔不佳、铜铂间距过大或大铜贴小元件、…