Flink Table Store 独立孵化启动 ,Apache Paimon 诞生

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 2023 年 3 月 12 日,Flink Table Store 项目顺利通过投票,正式进入 Apache 软件基金会 (ASF) 的孵化器,改名为 Apache Paimon (incubating)。

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 架构的普及和发展。

1

开放的数据格式

Paimon 以湖存储的方式基于分布式文件系统管理元数据,并采用开放的 ORC、Parquet、Avro 文件格式,支持各大主流计算引擎,包括 Flink、Spark、Hive、Trino、Presto。未来会对接更多引擎,包括 Doris 和 Starrocks。

大规模实时更新

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

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

2

  • 高性能更新: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. 流读:下游可以看到完整的、合并后的数据,而不是部分列。

3

流批一体数据读写

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

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

4

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

当面对主键表时,为什么你需要完整的 Changelog:

  1. 你的输入并不是完整的 changelog,比如丢失了 UPDATE_BEFORE (-U),比如同个主键有多条 INSERT 数据,这就会导致下游的流读聚合有问题,同个主键的多条数据应该被认为是更新,而不是重复计算。
  2. 当你的表是 Partial Update,下游需要看到完整的、合并后的数据,才可以正确的流处理。

你可以使用 Lookup 来实时生成 Changelog:

5

如果你觉得成本过大,你也可以解耦 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 的各位开发者

加入我们

作者简介:

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

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

点击查看更多技术内容


更多内容

img


活动推荐

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

image.png

相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
目录
打赏
0
0
0
0
36030
分享
相关文章
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
491 33
The Past, Present and Future of Apache Flink
Apache Flink 2.0.0: 实时数据处理的新纪元
Apache Flink 2.0.0 正式发布!这是自 Flink 1.0 发布九年以来的首次重大更新,凝聚了社区两年的努力。此版本引入分离式状态管理、物化表、流批统一等创新功能,优化云原生环境下的资源利用与性能表现,并强化了对人工智能工作流的支持。同时,Flink 2.0 对 API 和配置进行了全面清理,移除了过时组件,为未来的发展奠定了坚实基础。感谢 165 位贡献者的辛勤付出,共同推动实时计算进入新纪元!
213 1
Apache Flink 2.0.0: 实时数据处理的新纪元
|
6月前
|
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
1234 13
Apache Flink 2.0-preview released
Flink Materialized Table:构建流批一体 ETL
本文整理自阿里云智能集团 Apache Flink Committer 刘大龙老师在2024FFA流批一体论坛的分享,涵盖三部分内容:数据工程师用户故事、Materialized Table 构建流批一体 ETL 及 Demo。文章通过案例分析传统 Lambda 架构的挑战,介绍了 Materialized Table 如何简化流批处理,提供统一 API 和声明式 ETL,实现高效的数据处理和维护。最后展示了基于 Flink 和 Paimon 的实际演示,帮助用户更好地理解和应用这一技术。
413 7
Flink Materialized Table:构建流批一体 ETL
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
215 3
Flink Materialized Table:构建流批一体 ETL
Flink Materialized Table:构建流批一体 ETL
小米基于 Apache Paimon 的流式湖仓实践
本文整理自Flink Forward Asia 2024流式湖仓专场分享,由计算平台软件研发工程师钟宇江主讲。内容涵盖三部分:1)背景介绍,分析当前实时湖仓架构(如Flink + Talos + Iceberg)的痛点,包括高成本、复杂性和存储冗余;2)基于Paimon构建近实时数据湖仓,介绍其LSM存储结构及应用场景,如Partial-Update和Streaming Upsert,显著降低计算和存储成本,简化架构;3)未来展望,探讨Paimon在流计算中的进一步应用及自动化维护服务的建设。
104 0
小米基于 Apache Paimon 的流式湖仓实践
您有一份 Apache Flink 社区年度报告请查收~
您有一份 Apache Flink 社区年度报告请查收~

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等