Apache Kyuubi

2024-10-26

java

求学的三个条件是:多观察、多吃苦、多研究。——加菲劳

文档:

Quick Start — Apache Kyuubi

GitHub:

https://github.com/apache/kyuubi

Apache Kyuubi 是一个分布式多租户网关,用于在数据仓库和 Lakehouse 上提供无服务器 SQL。

Kyuubi 通过 Thrift JDBC/ODBC 接口提供纯 SQL 网关,供最终用户使用预编程和可扩展的 Spark SQL 引擎操作大规模数据。这种“开箱即用”的模型最大限度地减少了最终用户在客户端使用 Spark 的障碍和成本。在服务器端,Kyuubi服务器和引擎的多租户架构为管理员提供了实现计算资源隔离、数据安全、高可用性、高客户端并发等的方法。

类似 HiveServer2 的 API

多租户 Spark 支持

以无服务器方式运行 Spark

Kyuubi 的目标是让anyone可以轻松高效地使用 Spark(也许很快还有其他引擎),并方便用户像处理普通数据一样处理大数据。这里, anyone意思是用户不需要有 Spark 技术背景,只需要掌握人类语言,只需 SQL。有时,将 Kyuubi 与支持丰富的可视化和仪表板的 Apache Superset 集成时,不需要 SQL 技能。

在 Kyuubi 的典型大数据生产环境中,应该有系统管理员和最终用户。

  • 系统管理员:由 Spark 专家组成的小组,负责 Kyuubi 部署、配置和调优。
  • 最终用户:关注他们自己的业务数据,而不是它存储在哪里、如何计算。

此外,Kyuubi社区将通过各种功能不断优化整个系统,例如基于历史的优化器、自动调优、物化视图、SQL方言、函数等。

将工作负载从 HiveServer2 移植到 Spark SQL

在典型的大数据生产环境中,尤其是安全环境中,所有捆绑服务都管理访问控制列表以限制对授权用户的访问。例如,Hadoop YARN 将计算资源划分为队列。通过队列 ACL,它可以识别和控制哪些用户/组可以对特定队列执行操作。类似地,HDFS ACL 通过提供一种为特定用户/组设置不同权限的方法来控制 HDFS 文件的访问。

Apache Spark 是用于大规模数据处理的统一分析引擎。它提供了分布式 SQL 引擎,又名 Spark Thrift Server(STS),旨在与 HiveServer2 无缝兼容并获得更好的性能。

HiveServer2 可以识别并验证调用者,如果调用者也拥有 YARN 队列和 HDFS 文件的权限,则成功。否则,就会失败。然而,一方面,STS 是一个单一的 Spark 应用程序。 STS所属的用户和队列在启动时唯一确定。因此,STS无法利用YARN、Kubernetes等集群管理器进行资源隔离和共享,也无法控制整个系统内单个用户对调用者的访问。另一方面,Thrift Server 耦合在 Spark 驱动程序的 JVM 进程中。这种耦合架构给服务器稳定性带来了很高的风险,并使其无法处理高客户端并发性或应用高可用性(例如负载平衡),因为它是有状态的。

Kyuubi基于统一接口在多租户模型中扩展了STS的使用,并依靠多租户的概念与集群管理器进行交互,最终获得资源共享/隔离和数据安全的能力。 Kyuubi服务器和引擎的松耦合架构极大地提高了服务本身的客户端并发性和服务稳定性。

DataLake/Lakehouse 支持

Kyuubi 的愿景是统一门户并成为易于使用的数据湖管理平台。不同类型的工作负载,例如 ETL 处理和 BI 分析,可以通过一个平台、使用一份数据副本和一个 SQL 接口来支持。

  • 通过 Kyuubi DataLake 元数据 API 支持逻辑视图
  • 多目录支持
  • DataLake 的 SQL 标准授权支持(即将推出)

云原生支持

Kyuubi 可以将其引擎部署在不同类型的集群管理器上,例如 Hadoop YARN、Kubernetes 等。