T3 出行 Apache Kyuubi Flink SQL Engine 设计和相关实践

T3出行分享了基于Apache Kyuubi设计的Flink SQL Engine,解决了Flink对JDBC支持不足的问题。Kyuubi与Apache Linkis的集成提供了统一的SQL接口,支持多种计算引擎,简化了大数据开发流程。Flink SQL Engine支持DDL/DML操作,并展望了未来Application和Session模式的改进。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在日前的 Apache SeaTunnel & Kyuubi 联合 Meetup 上,T3出行大数据平台负责人、 Apache Kyuubi committer 杨华和T3出行高级大数据工程师李心恺共同分享了 Apache Kyuubi(Incubating) 在T3出行的最新实践与应用,包括基于 Kyuubi 设计的 Flink SQL Engine,Kyuubi 与 Apache Linkis 的集成,以及在T3出行的落地实践。

JDBC 之于 Flink 的现状

首先我们来聊一下 Apache Flink 社区 JDBC 的现状,Flink 在最初是一个流式计算(data flow)的模型,后来将批处理也引入了 data flow 上来,形成了“流批一体”的理念。

Flink 的批处理逐步在发展,但相比于一些成熟的离线计算引擎,比如 Hive、Spark SQL 而言,还不是很成熟,表现之一就是对 JDBC 规范的支持比较欠缺。当然 Flink 社区为此也做出了一些努力,这里给大家分享两来自 Flink 的德国的母公司 Ververica 所开源的两个项目,一个叫做 Flink SQL Gateway,一个叫做 Flink JDBC Driver。

这两个项目结合起来是能够让 Flink 支持 JDBC 的,但是这两个项目已经有一年多的时间不太活跃了,最后的一个贡献还停留在 2020 年。根据 Ververica 的现状估计,这两个项目再次活跃的可能性并不大。

Flink SQL Gateway 和 Flink JDBC Driver 的设计和实现,这是我基于源码画出的,大致的就是这两个组件结合起来,跟 Flink 交互提供对 JDBC 的支持。我们可以分成三层来看,最底下的 JDBC Driver 内部是通过 RESTful API 跟 Flink SQL Gateway 的进程所提供的服务去交互,走的是一个 HTTP 的协议。Flink SQL Gateway 可以看作是一个围绕 flink-client 包装出来的服务,在内部引入了 Session 的概念,并且提供了 SessionManager,可以认为它对资源做了一些 share 或者 cache 的能力,主入口是 SQLGatewayEndpoint,内部也提供了很多 Operation 的实现。

这些 Operation 可以分为两大类,一类是本地的 Operation,在内存中对元数据进行管理,比如说 catalog 数据;另外一类是 JobOperation。这两类 Operation 去跟 Flink Cluster 交互,一个是 Insert ,一个是 Selector,向 Flink 集群去提交作业。

我们可以看到这两个设计和实现是专门针对 Flink 的。虽然 Flink 提出了流批一体的概念,但据我们了解,目前只用 Flink 来把流和批处理的能力全部实现的公司并不多,绝大部分公司还处于 Spark 和 Flink 两个引擎共存的局面。所以对于一些通用能力,比如说多租户或者是对JDBC的支持,我们希望能够提供一个抽象了的实现,能够同时 Flink 和 Spark 这样的引擎,未来能够支持更多的引擎,所以我们的考虑,就是直接基于 Kyuubi 来Flink SQL Engine 的集成。

Flink SQL Engine 的设计与实现

下面介绍 Flink SQL Engine 的设计和实现。这是我画的一个高层抽象的组件的交互图,也可以拆成三个层次。最底下是一些 JDBC 或者 REST 的 client,他们会直接跟 Kyuubi Server 来交互。Kyuubi Server 内部分了两层的实现,最前端是 frontend layer,提供了不同协议的 frontend 的实现,后面是 ba

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网易杭研

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值