当前位置: 首页 > news >正文

1 快速了解Paimon数据湖核心原理及架构

1.1 什么是Apache Paimon    

Apache Paimon的前身属于Flink的子项目:Flink Table Store。

目前业内主流的数据湖存储项目都是面向批处理场景设计的,在数据更新处理时效上无法满足流式数据湖的需求,因此Flink社区在2022年的时候内部孵化了 Flink Table Store (简称 FTS )子项目,一个真正面向流以及实时的数据湖存储项目。

Flink Table Store最开始是作为 Flink 的子项目加入了 Apache 社区的,由 Flink 团队主导研发,后期为了更好的发展,Flink Table Store作为独立项目重新加入 Apache。
在2023年3月12日,Flink Table Store项目顺利通过投票,正式进入 Apache孵化器,并且改名为 Apache Paimon (incubating),也可以简称为Paimon。

Apache Paimon 目前还属于incubating项目,表示正处于孵化阶段。


Apache Paimon的定位是一个流式数据湖平台,他提供了高速数据摄取、Changelog追踪、以及实时查询等能力。

这里面的数据摄取是指获取和导入数据的过程(或者说是读取和写入数据的过程)。


Apache Paimon提供了上层表抽象,使用方式和传统数据库类似。

  • 在批处理模式下,它就像一个Hive表,支持批处理 SQL的各种操作。查询的时候默认会查询最新快照中的数据。
  • 在流处理模式下,它就像一个消息队列。查询的时候就像从历史数据永不过期的消息队列中查询流更改日志一样。

1.2 Paimon的整体架构


Paimon的整体架构是这样的:

从这个图里面可以看出来,Paimon支持多种方式读写数据和执行OLAP查询。

在读取层面,他可以读取MySQL中的数据,以及消息队列中的数据。

在查询层面,Paimon除了可以和Flink进行交互,还可以和其他计算引擎进行交互,例如: Hive、Spark、Trino等引擎。


在底层,Paimon 会将列式文件存储在分布式文件系统中,例如HDFS、S3,并且内部使用LSM Tree这种数据结构来存储数据,所以可以支持大量数据更新和高性能查询。


1.3 Paimon的核心特点


Paimon主要包含下面这些核心特点:


1. 统一的批处理和流处理
Paimon支持批量写入、批量读取,流式写入、流式更新,以及流式读取。

2. 数据湖功能
作为数据湖存储系统,Paimon具有低成本、高可靠性、可扩展的元数据等特性。

3. 丰富的合并引擎
Paimon支持丰富的合并引擎,针对多条相同主键的数据,可以选择保留最后一条新数据、或者进行局部更新,或者进行聚合,都是可以支持的。

4. 自动生成变更日志
Paimon支持丰富的Changelog 生产者,可以自动从任何数据源生成正确完整的变更日志,简化流式任务的分析。

5. 丰富的表类型
Paimon可以支持主键表和仅追加表,主键表可以支持新增、更新和删除表中的数据。
仅追加表只能支持新增数据,但是可以提供有序的流式数据读取,进而可以替换消息队列。
同时Paimon中也支持内部表、外部表、分区表和临时表这些表类型。

6. 支持表结构变更同步(也可以称为Schema模式演变)
在向Paimon中同步数据时,当数据源表的表结构发生了变化的时候,Paimon可以自动识别并同步到这些变化。


1.4 Paimon支持的生态


Paimon最初来源于Flink,所以他和Flink的兼容度是最好的。

当然,除了Flink之外,他还支持Spark、Hive、Trino、Presto这些流行引擎的读写。

这里面还列出来了Paimon和这些引擎的版本兼容度,以及批量读取、批量写入、创建表、修改表、流式写入、流式读取、批量数据覆盖这些功能的支持情况。

还有一些引擎目前不支持和Paimon进行交互,不过已经正在开发中了:例如:Doris、Seatunnel、Starrocks等等。

更多Paimon数据湖内容请关注https://edu.51cto.com/course/35051.html

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 机器人和自动化技术
  • 6.Spark共享变量
  • JavaScript客户端操作
  • 串口调试助手和网络调试助手使用总结
  • java split字符串作业
  • 基于STM32的设计智慧超市管理系统(带收银系统+物联网环境监测)
  • 优橙内推甘肃专场——5G网络优化(中高级)工程师
  • Django初窥门径-oauth登录认证
  • RabbitMQ(高级特性):限流
  • 【理解链表指针赋值】链表中cur->next = cur->next->next->next与cur =cur->next->next的区别
  • 在 React Router 中使用 JWT
  • 汇编-DUP操作符
  • Python学习笔记--构造(`__new__`)和初始化(`__init__`)
  • 第二十七章 解读Transformer_车道线检测中的Transformer(车道线感知)
  • 互联网Java工程师面试题·Spring篇·第七弹
  • JS 中的深拷贝与浅拷贝
  • .pyc 想到的一些问题
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • 2018一半小结一波
  • Angular2开发踩坑系列-生产环境编译
  • css的样式优先级
  • java概述
  • Laravel5.4 Queues队列学习
  • leetcode-27. Remove Element
  • log4j2输出到kafka
  • Vue 重置组件到初始状态
  • vue2.0项目引入element-ui
  • Vue官网教程学习过程中值得记录的一些事情
  • 关于 Cirru Editor 存储格式
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 数组大概知多少
  • 网络应用优化——时延与带宽
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • ​2021半年盘点,不想你错过的重磅新书
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (C#)一个最简单的链表类
  • (day 12)JavaScript学习笔记(数组3)
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (Java入门)学生管理系统
  • (独孤九剑)--文件系统
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (六)c52学习之旅-独立按键
  • (三)Honghu Cloud云架构一定时调度平台
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (三十五)大数据实战——Superset可视化平台搭建
  • (贪心) LeetCode 45. 跳跃游戏 II
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池