乐趣区

关于后端:Flink-Table-Store-独立孵化启动-Apache-Paimon-诞生

2023 年 3 月 12 日,Flink Table Store 我的项目顺利通过投票,正式进入 Apache 软件基金会 (ASF) 的孵化器,改名为 Apache Paimon (incubating)。

随着 Apache Flink 技术社区的一直成熟和倒退,越来越多企业开始利用 Flink 进行流式数据处理,从而晋升数据时效性价值,获取业务实时化成果。与此同时,在大数据畛域数据湖架构也日益成为新的技术趋势,越来越多企业开始采纳 Lakehouse 架构,基于 DataLake 构建新一代 Data Warehouse。因而,Flink 社区心愿可能将 Flink 的 Streaming 实时计算能力和 Lakehouse 新架构劣势进一步联合,推出新一代的 Streaming Lakehouse 技术,促成数据在数据湖上真正实时流动起来,并为用户提供实时离线一体化的开发体验。

但目前业界支流数据湖存储格局我的项目都是面向 Batch 场景设计的,在数据更新解决时效性上无奈满足 Streaming Lakehouse 的需要,因而 Flink 社区在一年多前外部孵化了 Flink Table Store(简称 FTS)子项目,一个真正面向 Streaming 以及 Realtime 的数据湖存储我的项目,截止目前曾经公布了 3 个版本,并失去了大量用户的踊跃反馈和多家公司的踊跃奉献。为了让 Flink Table Store 可能有更大的倒退空间和生态体系,Flink PMC 通过探讨决定将其捐献 ASF 进行独立孵化。

截止目前,包含 阿里云,字节跳动、Confluent、同程旅行、Bilibili 等多家公司参加到 Apache Paimon 的奉献,将来心愿可能有更多对新一代流式数据湖存储感兴趣的开发者退出 Paimon 社区,一起打造新一代的流式湖仓新架构。

什么是 Apache Paimon

Apache Paimon (incubating) 是一项流式数据湖存储技术,能够为用户提供高吞吐、低提早的数据摄入、流式订阅以及实时查问能力。Paimon 采纳凋谢的数据格式和技术理念,能够与 Apache Flink / Spark / Trino 等诸多业界支流计算引擎进行对接,独特推动 Streaming Lakehouse 架构的遍及和倒退。

凋谢的数据格式

Paimon 以湖存储的形式基于分布式文件系统治理元数据,并采纳凋谢的 ORC、Parquet、Avro 文件格式,反对各大支流计算引擎,包含 Flink、Spark、Hive、Trino、Presto。将来会对接更多引擎,包含 Doris 和 Starrocks。

大规模实时更新

得益于 LSM 数据结构的追加写能力,Paimon 在大规模的更新数据输出的场景中提供了杰出的性能。

Paimon 翻新的联合了 湖存储 + LSM + 列式格局 (ORC, Parquet),为湖存储带来大规模实时更新能力,Paimon 的 LSM 的文件组织构造如下:

  • 高性能更新:LSM 的 Minor Compaction,保障写入的性能和稳定性
  • 高性能合并:LSM 的有序合并效率十分高
  • 高性能查问:LSM 的 根本有序性,保障查问能够基于主键做文件的 Skipping

在最新的版本中,Paimon 集成了 Flink CDC,通过 Flink DataStream 提供了两个外围能力:

  1. 实时同步 Mysql 单表到 Paimon 表,并且实时将上游 Mysql 表构造(Schema)的变更同步到上游的 Paimon 表中。
  2. 实时同步 Mysql 整库级别的表构造和数据到 Paimon 中,同时反对表构造变更的同步,并且在同步过程中复用资源,只用大量资源,就能够同步大量的表。

通过与 Flink CDC 的整合,Paimon 能够让的业务数据简略高效的流入数据湖中。

数据表部分更新

在数据仓库的业务场景下,常常会用到宽表数据模型,宽表模型通常是指将业务主体相干的指标、维表、属性关联在一起的模型表,也能够泛指将多个事实表和多个维度表相关联到一起造成的宽表。

Paimon 的 Partial-Update 合并引擎能够依据雷同的主键实时合并多条流,造成 Paimon 的一张大宽表,依附 LSM 的提早 Compaction 机制,以较低的老本实现合并。合并后的表能够提供批读和流读:

  1. 批读:在批读时,读时合并依然能够实现 Projection Pushdown,提供高性能的查问。
  2. 流读:上游能够看到残缺的、合并后的数据,而不是局部列。

流批一体数据读写

Paimon 作为一个流批一体的数据湖存储,提供流写流读、批写批读,你应用 Paimon 来构建 Streaming Pipeline,并且数据积淀到存储中。

在 Flink Streaming 作业实时更新的同时,能够 OLAP 查问各个 Paimon 表的历史和实时数据,并且也能够通过 Batch SQL,对之前的分区 Backfill,批读批写。

不论输出如何更新,或者业务要求如何合并 (比方 partial-update),应用 Paimon 的 Changelog 生成性能,总是可能在流读时获取完全正确的变更日志。

当面对主键表时,为什么你须要残缺的 Changelog:

  1. 你的输出并不是残缺的 changelog,比方失落了 UPDATE_BEFORE (-U),比方同个主键有多条 INSERT 数据,这就会导致上游的流读聚合有问题,同个主键的多条数据应该被认为是更新,而不是反复计算。
  2. 当你的表是 Partial Update,上游须要看到残缺的、合并后的数据,才能够正确的流解决。

你能够应用 Lookup 来实时生成 Changelog:

如果你感觉老本过大,你也能够解耦 Commit 和 Changelog 生成,通过 Full-Compaction 和对应较大的时延,以非常低的老本生成 Changelog。

版本公布

Flink Table Store 曾经公布了三个版本,咱们打算在 4 月份公布 Paimon 0.4 版本,请您放弃对 Paimon 的关注。

Paimon 将长期投入实时性、生态和数仓完整性的研发上,构建更好的 Streaming LakeHouse。

如果您有其余需要,请分割咱们。

致谢

  • 感激 Apache Flink 的搭档们,有你们的反对,才有 Flink Table Store 的诞生
  • 感激我的项目孵化 Champion 李钰老师,也感激其余 Mentors: 秦江杰, Robert Metzger, Stephan Ewen
  • 感激来自阿里巴巴,字节跳动、Confluent、同程旅行、Bilibili 的各位开发者

退出咱们

  • 官方网站:https://paimon.apache.org/
  • Github 我的项目:https://github.com/apache/incubator-paimon (欢送大家 star&fork 反对)
  • 钉钉交换群:10880001919 Apache Paimon 交换群

作者简介:

王峰 (莫问) Apache Flink 中文社区发起人、阿里巴巴开源大数据平台负责人,PPMC Member of Apache Paimon

李劲松 (之信) 阿里巴巴开源大数据表存储负责人,Founder of Apache Paimon, PMC Member of Apache Flink

点击查看更多技术内容


更多内容


流动举荐

阿里云基于 Apache Flink 构建的企业级产品 - 实时计算 Flink 版现开启流动:
99 元试用 实时计算 Flink 版(包年包月、10CU)即有机会取得 Flink 独家定制卫衣;另包 3 个月及以上还有 85 折优惠!
理解流动详情:https://www.aliyun.com/product/bigdata/sc

退出移动版