数据湖是大数据近年来的网红项目,大家熟知的开源数据湖三剑客 Apache hudi、Apache iceberg 、Databricks delta 近年来野蛮生长,目前各自背后也都有商业公司支持,投入了大量的人力物力去做研发和宣传。然而今天我们要讲的是数据湖界的后起之秀 —— flink-table-store。

熟悉 Flink 项目的同学对这个项目应该并不陌生,它在去年作为 Flink 的子项目加入了 Apache 社区,由 Flink 团队主导研发,截止到目前 star 数 423,fork 数 171,总体来说并不算大火,也许是因为开源的时间并不长,也许是因为数据湖市场早已被三剑客占据了大半,也许是宣传的力度不够,也许是 Flink 子项目限制了它作为数据湖产品的发展。然而可能也正是这些种种的原因促成了这次 flink-table-store 作为独立项目重新加入 Apache,不再依附 Flink,这无论是对于 flink-table-store 的未来发展,还是对于数据湖领域来说都是一件好事。

从 Apache 的提案可以看出,flink-table-store 作为独立项目后的项目名是 Paimon,玩过原神的同学应该对这个名字不陌生,它是游戏中的 NPC,作为向导在整个冒险过程中陪伴着旅行者,至于 Paimon 具体的寓意可能得等官宣解释了。

说回正题,Paimon 的定位是分布式文件系统(HDFS、S3 等)上的数据文件支持的湖存储,用于使用大数据计算引擎(即 Flink、Spark、Hive、Trino 等)为流式处理和批处理构建动态表,支持高速数据摄取和实时数据查询。与其他数据湖存储项目不同,Paimon 旨在同时支持高吞吐量和低端到端延迟(更好的数据新鲜度),尤其适用于密集型 UPDATE 和 DELETE 工作负载。

Paimon 独立加入Apache 后的一些规划:

  • 扩展Paimon的生态,提供独立的Java API,支持 Spark、Hive、Trino、Presto、Doris等更多大数据引擎的读写。
  • 补充关键能力,特别是流式读取和密集更新/删除,以创建统一且易于使用的流式数据仓库(lakehouse)。
  • 成长为一个更有活力和中立的开源社区。(关键词“中立”,这也是促成Paimon独立的主要原因)

Paimon 解决的痛点

随着流处理在生产中的应用(Flink、Spark-Streaming等技术),对存储同时支持更新、删除和流式读取的需求越来越大,为了支持这样的要求我们有如下一些方案:

  • 一种选择是使用 OLAP 系统,如 ClickHouse 和 Aapache Doris,它们能够提供高速数据摄取。但是不支持流式读取,存储成本比较高。
  • 另一种选择是使用现有的湖存储,例如 Apache Hudi 和 Apache Iceberg。然而,从实时处理系统高速摄取最新(更新)数据提出了巨大的挑战,并且会使两个系统不堪重负。

    创建 Paimon 就是为了解决现有解决方案的局限
  • 支持大数据集存储,支持批流式读写。
  • 支持流消费的增量快照。
  • 支持最低延迟至毫秒的流式查询。
  • 支持批处理/OLAP 查询,延迟最小到秒级。

Paimon 基本原理说明

Paimon原生采用LSM(Log-Structured Merge-tree)作为其底层数据结构,除了常见的湖存储能力外,还为带主键的数据提供了增强的性能。更重要的是,Paimon 支持批流操作(读和写),方便应用程序追求批流统一语义。具体来说:

  • Paimon 利用 LSM 数据结构的附加写入功能,在密集的更新/删除工作负载上提供出色的性能。
  • Paimon 利用 LSM 的有序特性支持有效的过滤器下推,可以将主键过滤查询的延迟降低到毫秒级。
  • Paimon 支持各种(基于行或行列)文件格式,包括 Apache Avro、Apache ORC 和 Apache Parquet(行在写出之前将按主键排序)。
  • Paimon提供的表可以被各种引擎查询,包括Apache Flink、Apache Spark、Apache Hive、Trino等。
  • Paimon 的元数据是自我管理的,存储在分布式文件系统上,可以同步到 Hive metastore (HMS)。
  • 除了常见的批量读写支持外,Paimon 还支持流式读取和更改数据馈送。

目前该提案正在邮件讨论的阶段,孵化器导师对该项目独立加入 ASF 都持赞同态度,相信不久就会官宣这一消息。

另外有导师提出,鉴于大多数参与人员都熟悉 ASF 以及项目应该如何运作,是否可以不进过孵化器而直接作为单独的顶级项目(TLP)。比如 Apache Camel 是 Apache ActiveMQ 的一个子项目, 它没有经过孵化器过程就成为了 TLP,因为大多数开发人员知道如何运行 ASF 项目。该方案目前还在讨论当中。

随着 Paimon 的独立,数据湖市场的争夺将进入白热化阶段,其实百花齐发对于用户来说是利好的,良性竞争可以促进项目的快速迭代,但是在做选择上还是得头痛一会儿了,关于数据湖“四剑客”技术细节的文章后续会在这个公众号上陆续更新,欢迎持续关注。不知道这次 Paimon 可以在数据湖领域掀起多大的浪,让我们拭目以待!


重磅!flink-table-store 将作为独立数据湖项目重新加入 Apache的更多相关文章

  1. 使用 Iceberg on Kubernetes 打造新一代云原生数据湖

    背景 大数据发展至今,按照 Google 2003年发布的<The Google File System>第一篇论文算起,已走过17个年头.可惜的是 Google 当时并没有开源其技术,& ...

  2. Apache Hudi:云数据湖解决方案

    1. 引入 开源Apache Hudi项目为Uber等大型组织提供流处理能力,每天可处理数据湖上的数十亿条记录. 随着世界各地的组织采用该技术,Apache开源数据湖项目已经日渐成熟. Apache ...

  3. 【翻译】Flink Table Api & SQL — 配置

    本文翻译自官网:Configuration https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/config.h ...

  4. 【翻译】Flink Table Api & SQL — SQL客户端Beta 版

    本文翻译自官网:SQL Client Beta  https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/sqlCl ...

  5. 【翻译】Flink Table Api & SQL —— 概念与通用API

    本文翻译自官网:https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/common.html Flink Tabl ...

  6. 【翻译】Flink Table Api & SQL —— 数据类型

    本文翻译自官网:https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/types.html Flink Table ...

  7. 【翻译】Flink Table Api & SQL —— 连接到外部系统

    本文翻译自官网:Connect to External Systems  https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev ...

  8. 使用Apache Flink 和 Apache Hudi 创建低延迟数据湖管道

    近年来出现了从单体架构向微服务架构的转变.微服务架构使应用程序更容易扩展和更快地开发,支持创新并加快新功能上线时间.但是这种方法会导致数据存在于不同的孤岛中,这使得执行分析变得困难.为了获得更深入和更 ...

  9. [转载] Can't create table './store/#sql-b2c_1a.frm' (errno: 150)和sql execution error #1452添加外键时错误解决方法

    Can't create table './store/#sql-b2c_1a.frm' (errno: 150)解决方法 错误原因有四: 1.外键的引用类型不一样,主键是int外键是char 2.找 ...

  10. Flink 报错 "Could not find a suitable table factory for 'org.apache.flink.table.factories.StreamTableSourceFactory' in the classpath"

    先上代码: table = tablexx.select('*).tablexx.groupBy('x).select('x, xx.count ) tableEnvironment // decla ...

随机推荐

  1. K8s 超详细总结

    一个目标:容器操作:两地三中心:四层服务发现:五种Pod共享资源:六个CNI常用插件:七层负载均衡:八种隔离维度:九个网络模型原则:十类IP地址:百级产品线:千级物理机:万级容器:相如无亿,K8s有亿 ...

  2. docker 第二课

    构建nginx镜像 Dockerfile 指令: FROM centos:7.9.2009 #在整个dockfile文件中除了注释之外的第一行,要是FROM ,FROM 指令当前镜像的用于指定父镜像( ...

  3. AssertionError: Class XXXXX missing "Meta.model" attribute

    源码示例: from rest_framework import serializers from set.models import Set class SetSerializers(seriali ...

  4. “喜提”一个P2级故障—CMSGC太频繁,你知道这是什么鬼?

    大家好,我是陶朱公Boy. 背景 今天跟大家分享一个前几天在线上碰到的一个GC故障- "CMSGC太频繁". 不知道大家看到这条告警内容后,是什么感触?我当时是一脸懵逼的,一万个为 ...

  5. 3、mysql着重号解决关键字冲突

    1.着重号(`  `): 使用着重号(` `)将字段名或表名括起来解决冲突:保证表中的字段.表名等没有和保留字.数据库系统名或常用方法名冲突

  6. Hello 2023 A-D

    比赛链接 A 题意 给一个字符串每个物品对应的灯的照明方向,L/R 能照亮它左侧/右侧的所有物品(不包括自己对应的物品),现在能交换相邻两个灯一次(不改变照明方向),问能否找亮所有物品. 题解 知识点 ...

  7. 终端安装python3使用如下指令

    ''' brew install python3 ''' 会报错,报错如下:Cannot install in Homebrew on ARM processor in Intel default p ...

  8. Python自动批量修改文件名称的方法

      本文介绍基于Python语言,按照一定命名规则批量修改多个文件的文件名的方法.   已知现有一个文件夹,其中包括班级所有同学上交的作业文件,每人一份:所有作业文件命名格式统一,都是地信1701_姓 ...

  9. 药物警戒系统与EDI/Gateway/AS2

    药物警戒学在美国.日本.欧盟诸国等国家已经有数十年的历史,药物警戒的作用越来越收到各国监管部门的重视.随着我国药监管理政策的革新,药物警戒在药物研发.药品上市后监管领域的作用也越来越重要. 国外有两款 ...

  10. 定时调度插件------Sundial

    1 插件概述 开源链接:https://gitee.com/dotnetchina/Sundial 作者:百小僧 版本:2.5.6 2 使用方式 2.1 安装 nuget :搜索Sundial或使用命 ...