数据湖是大数据近年来的网红项目,大家熟知的开源数据湖三剑客 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. ArcObjects SDK开发 011 RasterLayer

    1.RasterLayer的结构 图层的话,除了FeatureLayer外,用的最多的就是RasterLayer了.较FeatureLayer而言,RasterLayer比较简单,这点可以从栅格图层的 ...

  2. Java程序员除了做增删改查还能干嘛?

    就以Java后端开发为例,说说不同级别程序员干的事情. 1 初级开发,大概是有3年Java开发经验. 22年底,上海,这批程序员如果学历是本科,薪资一般是8k到2w,当然如果能进好公司或互联网大厂,薪 ...

  3. 基于人人框架--本地项目部署流程(前后端+IIS上传功能)

    基于人人框架--本地项目部署流程(前后端+IIS上传功能) 一.环境要求 JAVA环境 JDK:1.8 IIS 本地电脑必须要有IIS服务 MySQL 数据库采用MySQL数据库,安装版本为 5.7. ...

  4. Django静态文件配置、form表单、request对象、连接数据库、ORM

    目录 静态文件配置 静态文件相关配置 1.接口前缀 浏览器停用缓存 2.接口前缀动态匹配 form表单 action 控制数据提交的地址 method 控制数据提交的方法 请求方法补充 get: 朝服 ...

  5. 基于.NetCore开发博客项目 StarBlog - (25) 图片接口与文件上传

    前言 上传文件的接口设计有两种风格,一种是整个项目只设置一个接口用来上传,然后其他需要用到文件的地方,都只存一个引用ID:另一种是每个需要文件的地方单独管理各自的文件.这俩各有优劣吧,本项目中选择的是 ...

  6. 网络监测工具之Zabbix的搭建与测试方法(二)-- SNMP、OID和MIB概述

    概念 SNMP是专门设计用于在 IP 网络管理网络节点的一种标准协议,它是一种应用层协议.SNMP使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长.通过SNMP接收随机消息(及事件报告 ...

  7. 我们来汉化IntelliJ IDEA

    (原发于 GitHub Pages,2018-10-13 13:51:09) 两年前我从一名光荣的C++程序员专业为PHP程序员以后,告别了世界第一IDE Visual Studio,改用当时觉得特别 ...

  8. [LeetCode]杨辉三角 II

    题目 代码 class Solution { public: vector<int> getRow(int rowIndex) { vector<int> array(rowI ...

  9. 【深入浅出Seata原理及实战】「入门基础专题」探索Seata服务的AT模式下的分布式开发实战指南(2)

    承接上文 上一篇文章说到了Seata 为用户提供了 AT.TCC.SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案.那么接下来我们将要针对于AT模式下进行分布式事务开发的原理进行介绍以及 ...

  10. 路由分发、名称空间、虚拟环境、视图层三板斧、JsonResponse对象、request对象获取文件、视图层FBV与CBV的源码剖析、模版层简介

    今日内容详细 路由分发 ​ django的每一个应用都可以有自己独立的路由层(urls.py)静态文件(static文件夹)模板层(templates文件夹) ​ 基于这个特性多人开发项目就可以完全解 ...