eBay 基于 Apache Kyuubi 构建统一 Serverless Spark 网关的实践

本文介绍了eBay基于Apache Kyuubi构建的Serverless Spark网关,解决了Spark Thrift Server的单点瓶颈问题。Kyuubi作为一个无状态服务,支持HA和LB,提供多租户和分布式特性。文章详细阐述了Kyuubi的架构、使用场景以及在eBay的实践,包括Engine的动态管理和资源回收机制,以及如何通过Kyuubi服务多个Hadoop集群。此外,还介绍了Kyuubi的增强功能,如异步OpenSession、RESTful API支持和权限校验。
摘要由CSDN通过智能技术生成

本文来自 eBay 软件工程师、Apache Kyuubi PPMC Member王斐在Apache SeaTunnel & Kyuubi 联合 Meetup的分享,介绍了Apache Kyuubi(Incubating)的基本架构和使用场景,eBay基于自身的需求对Kyuubi所做的增强,以及如何基于Kyuubi构建Unified & Serverless Spark Gateway。

Kyuubi是什么

首先介绍一下Kyuubi。Kyuubi是一个分布式的Thrift JDBC/ODBC server,支持多租户和分布式等特性,可以满足企业内诸如ETL、BI报表等大数据场景的应用。项目由网易数帆发起,已经进入Apache基金会孵化,目前的主要方向是依托本身的架构设计,围绕各类主流计算引擎,打造一个Serverless SQL on Lakehouse服务,目前支持的引擎有Spark、Flink、Trino(也就是Presto)。我今天的主题是围绕Kyuubi和Spark, 关于其它计算引擎这里不再展开。

对于Spark,Kyuubi有HiveServer2的API,支持Spark多租户,然后以Serverless的方式运行。HiveServer2是一个经典的JDBC服务,Spark社区也有一个类似的服务叫做Spark Thrift Server。这里介绍一下Spark Thrift Server和Kyuubi的对比。

Spark Thrift Server可以理解为一个独立运行的Spark app,负责接收用户的SQL请求, SQL的编译以及执行都会在这个app里面去运行,当用户的规模达到一定的级别,可能会有一个单点瓶颈。

对于Kyuubi,我们可以看右边这张图,有一个红色的用户和一个蓝色的用户,他们分别有一个红色的Spark app和一个蓝色的Spark app,他们的SQL请求进来之后,SQL的编译和执行都是在对应的app之上进行的,就是说Kyuubi Server只进行一次SQL请求的中转,把SQL直接发送给背后的Spark app。

对于Spark Thrift Server来讲,它需要保存结果以及状态信息,是有状态的,所以不能支持HA和LB。而Kyuubi不保存结果,几乎是一个无状态的服务,所以Kyuubi支持HA和LB,我们可以增加Kyuubi Server的个数来满足企业的需求。所以说Kyuubi是一个更好的Spark SQL Gateway。

Kyuubi的架构分为两层,一层是Server层,一层是Engine层。Server层和Engine层都有一个服务发现层,Kyuubi Server层的服务发现层用于随机选择一个Kyuubi Server,Kyuubi Server对于所有用户来共享的。Kyuubi Engine层的服务发现层对用户来说是不可见的,它是用于Kyuubi Server去选择对应的用户的Spark Engine,当一条用户的请求进来之后,它会随机选择一个Kyuubi Server,Kyuubi Server会去Engine的服务发现层选择一个Engine,如果Engine不存在,它就会创建一个Spark Engine,这个Engine启动之后会向Engine的服务发现层去注册,然后Kyuubi Server和Engine之间的再进行一个Internal的连接,所以说Kyuubi Server是所有用户共享,Kyuubi Engine是用户之间资源隔离。

Kyuubi支持一些Engine的共享级别,它是基于隔离和资源之间的平衡。在eBay我们主要使用到了USER 和CONNECTION级别。首先对于CONNECTION级别,对于用户的每次连接都会创造一个新的app,也就是一个Kyuubi Engine,适用于ETL场景,ETL的workload比较高,需要一个独立的app去执行;对于USER级别

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

网易杭研

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

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

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

打赏作者

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

抵扣说明:

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

余额充值