Apache Flink Table Store 0.2.0 发布

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 增加了 Hive、Spark 和 Trino 等计算引擎的对接支持,并且稳定了存储的格式。

作者|Jingsong Lee jingsonglee0@gmail.com

Apache Flink 社区很高兴地宣布发布 Apache Flink Table Store 0.2.0。

在这个版本中,增加了 Hive、Spark 和 Trino 等计算引擎的对接支持,并且稳定了存储的格式。欢迎大家试用和反馈!

Flink Table Store 仓库地址:

https://github.com/apache/flink-table-store

项目文档和用户指南请查看:

https://nightlies.apache.org/flink/flink-table-store-docs-release-0.2/

Flink Table Store 是什么

Flink Table Store是一个数据湖存储,用于实时流式 Changelog 摄取 (比如来自 Flink CDC 的数据) 和高性能查询。

img

作为一种新型的可更新数据湖,Flink Table Store 具有以下特点:

  • 大吞吐量的更新数据摄取,同时提供良好的查询性能。
  • 具有主键过滤器的高性能查询,响应时间最快可达到百毫秒级别。
  • 流式读取在 Lake Storage 上可用,Lake Storage 还可以与 Kafka 集成,以提供毫秒级流式读取。

功能

在这个版本中,我们完成了许多令人兴奋的功能。

Catalog

此版本引入了 Table Store 自己的 Catalog,在 Catalog 下创建的表,持久化保存表信息等元数据,可以跨 session 访问存量表。

默认情况下元数据都保存在 DFS 上。也支持配置 Hive Metastore 的自动同步。

CREATE CATALOG tablestore WITH (
  'type'='table-store',
  'warehouse'='hdfs://nn:8020/warehouse/path',
  -- optional hive metastore
  'metastore'='hive',
  'uri'='thrift://<hive-metastore-host-name>:<port>'
);

USE CATALOG tablestore;

CREATE TABLE my_table ...

当开启 Hive Metastore 时,你可以比较方便的使用 Hive 引擎来查询 Flink Table Store。

生态

在本版本中,我们不仅支持 Flink 1.15,也支持了 Flink 1.14,并为多个计算引擎提供读取支持。

我们会保持 Flink 引擎和 Flink Table Store 的全面结合,构建完整的流批一体计算和存储的流式数仓。此外,Flink Table Store 也支持了更多的计算引擎,包括 Hive/Spark/Trino 等,从而可以兼容更多的生态,便于在现有生产环境中使用。

img

如果你有关于生态的需求和想法,比如想让 Spark 或 Hive 支持写入 Flink Table Store,欢迎通过扫描文末的二维码入群交流,或者在 Flink 社区创建 issue 进行讨论。

Append-only 表

Append-only 表功能是一种性能改进,只接受 INSERT_ONLY 的数据以 Append 到存储,而不是更新或删除现有数据,适用于不需要更新的用例(如日志数据同步)。

CREATE TABLE my_table (
    ...
) WITH (
    'write-mode' = 'append-only',
    ...
)

流式写入 Append-only 表也具有异步 Compaction,从而不需要担心小文件问题。

Bucket 扩缩容

单个 Bucket 内是一个单独的 LSM 结构,Bucket 的数量会影响性能:

  • 过小的 Bucket 数量会导致写入作业有瓶颈,吞吐跟不上写入速度。
  • 过大的 Bucket 数量会导致有大量小文件,且影响查询速度。

Flink Table Store 允许用户通过 ALTER TABLE 命令调整存储桶数量,并通过 INSERT OVERWRITE 重新组织必要的分区,旧分区保持不变。

性能测试

在以下的模块里,我们创建了关于流计算更新和查询的 Benchmark:

https://github.com/apache/flink-table-store/tree/master/flink-table-store-benchmark

更新性能和查询性能是互相权衡的,所以在性能测试中不能单独衡量更新性能或者查询性能。

  • 如果只考虑查询性能,那么 Copy On Write (COW) 是最适合的技术方案,但这种设计下更新时会覆写所有数据,因此是以牺牲更新性能为代价的。
  • 如果只考虑更新性能,那么 Merge On Read (MOR) 是最适合的技术方案,但这种设计下会在读取时对数据进行合并,从而影响查询的性能。
  • Flink Table Store 目前只支持 MOR 模式,但通过 Data Skipping 等技术对查询性能做了优化。

下面对比了 Flink Table Store 和 Hudi MOR、Hudi COW,在实时更新场景的写入(包含插入和更新)与查询性能。目前湖存储中,只有 Hudi 比较好的支持了流更新写入,而 Iceberg 和 Delta 更适合使用批 SQL 的 MERGE INTO 来完成更新,所以这里只对比了 Hudi。

测试方法:

  • 通过 Flink SQL 向定义了主键的表里写入定量的随机数据,测量耗时以及平均的 Cpu 消耗,以此衡量存储的更新性能。
  • 通过 Spark SQL 查询写好数据的表,测量三种 Query:查询全部数据、查询主键的某个范围、点查某个主键,以此衡量存储的查询性能。

测试用例:

  • 总量:数据总条数 5 亿条。
  • 主键:随机的数据,随机范围是 1 亿。
  • 大小:每条数据大概 150 字节。

此测试用例比较简单,如有需要可以利用 benchmark 构建更复杂的用例来贴合自己的生产场景。

测试环境:

  • Flink 版本: 1.14.5
  • Spark 版本:3.2.2
  • Flink Table Store 版本: 0.2.0
  • Hudi 版本:0.11.1
  • 集群:三台物理机的 Hadoop 集群

Flink 集群参数:

img

Spark 集群参数:

img

Flink Table Store 参数:

img

Hudi 参数:

img

写入性能 (throughput / core):

img

查询性能 (秒) (Flink Table Store vs Hudi MOR):

img

查询性能 (秒) (Flink Table Store vs Hudi COW):

img

结论,面向此测试用例:

  • Flink Table Store 对比 Merge On Read 有着比较好的更新性能和查询性能。
  • Flink Table Store 对比 Copy On Write 有着比较好的更新性能,但是查询所有数据不如 COW,Flink Table Store 是一个 Merge On Read 的技术,有 Merge 的开销,但是 Merge 的效率非常高。
  • Flink Table Store 因为保持了有序性,直接查询表可以有很好的 Data Skipping,点查甚至可以达到 100ms 以内的延迟。

如果你有任何关于 Benchmark 的想法,请与我们联系。如果有你感兴趣的场景,可以添加用例到 benchmark 项目中。

下一步

在即将发布的 0.3.0 版本中,您可以期待以下功能:

  • Lookup:支持 Flink Dim Lookup Join。(即将来临)
  • 并发更新:多个 Flink 作业写入同一张 Flink Table Store 表。
  • Compaction分离:单独的任务完成Compaction。
  • 物化视图:Flink Table Store 提供预聚合模型。
  • 变更日志生成:为各种 MergeEngine 生成准确的变更日志。
  • 多引擎的写支持:支持 Spark、Hive 写入 Flink Table Store。

Flink Table Store 长期目标是满足批流一体对存储的所有要求,并构建实时低成本的 Streaming Data Warehouse。

如果您有业务上需求,请联系我们!

交流

钉钉交流群如下,欢迎大家来交流存储相关的想法。

O1CN01GYMEic1aV1GGtWvdF_!!6000000003334-2-tps-1170-1530.png


近期热点

实时数仓Workshop · 广州站 9.15 邀您参加!

Beyond Stream Processing !第四届实时计算 Flink 挑战赛启动,49 万奖金等你来拿!

5 大类应用场景,26 个大厂真实生产案例分享,2022 年度 Apache Flink 案例集发布

img

活动推荐

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

image.png

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
2月前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
363 33
The Past, Present and Future of Apache Flink
|
4月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
982 13
Apache Flink 2.0-preview released
|
4月前
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
160 3
|
4月前
|
分布式计算 监控 大数据
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
大数据-148 Apache Kudu 从 Flink 下沉数据到 Kudu
111 1
|
4月前
|
数据挖掘 物联网 数据处理
深入探讨Apache Flink:实时数据流处理的强大框架
在数据驱动时代,企业需高效处理实时数据流。Apache Flink作为开源流处理框架,以其高性能和灵活性成为首选平台。本文详细介绍Flink的核心特性和应用场景,包括实时流处理、强大的状态管理、灵活的窗口机制及批处理兼容性。无论在实时数据分析、金融服务、物联网还是广告技术领域,Flink均展现出巨大潜力,是企业实时数据处理的理想选择。随着大数据需求增长,Flink将继续在数据处理领域发挥重要作用。
307 0
|
6月前
|
存储 消息中间件 Java
Apache Flink 实践问题之原生TM UI日志问题如何解决
Apache Flink 实践问题之原生TM UI日志问题如何解决
58 1
|
5月前
|
SQL 消息中间件 关系型数据库
Apache Doris Flink Connector 24.0.0 版本正式发布
该版本新增了对 Flink 1.20 的支持,并支持通过 Arrow Flight SQL 高速读取 Doris 中数据。
|
6月前
|
消息中间件 监控 数据挖掘
基于RabbitMQ与Apache Flink构建实时分析系统
【8月更文第28天】本文将介绍如何利用RabbitMQ作为数据源,结合Apache Flink进行实时数据分析。我们将构建一个简单的实时分析系统,该系统能够接收来自不同来源的数据,对数据进行实时处理,并将结果输出到另一个队列或存储系统中。
350 2
|
6月前
|
消息中间件 分布式计算 Hadoop
Apache Flink 实践问题之Flume与Hadoop之间的物理墙问题如何解决
Apache Flink 实践问题之Flume与Hadoop之间的物理墙问题如何解决
74 3
|
6月前
|
消息中间件 运维 Kafka
Apache Flink 实践问题之达到网卡的最大速度如何解决
Apache Flink 实践问题之达到网卡的最大速度如何解决
66 2

相关产品

  • 实时计算 Flink版
  • 推荐镜像

    更多