You need to enable JavaScript to run this app.
导航
高阶特性
最近更新时间:2025.04.01 20:13:41首次发布时间:2025.01.10 02:56:42
我的收藏
有用
有用
无用
无用

引擎支持

当前版本 Kyuubi 开箱支持 Spark3 On YARN 模式,对于 Flink、Presto 等引擎没有验证,暂不提供生产可用的承诺。

说明

注意

  • 若您有通过 Kyuubi 使用其他引擎的需求,可通过配置 kyuubi.engine.type 进行切换,配置修改详见 运维管理 > 服务列表 > Kyuubi > 服务参数
  • kyuubi.engine.type 为实验性质的配置,当选用非 SPARK_SQL 的其他配置值,会将共享等级限定为 CONNECTION 级别,与 kyuubi.engine.share.level 配置冲突。

下文提到的 Kyuubi 引擎全部为 On YARN 的 Spark3 引擎。

引擎共享等级

根据 kyuubi-defaults 配置文件中提供的 kyuubi.engine.share.level 配置,您可以定义 Kyuubi 服务的引擎共享级别。目前 kyuubi.engine.share.level 默认被设置为 GROUP 级别。
支持的共享等级与相关含义说明如下所示:

共享级别

含义

备注

CONNECTION

每个 Session 独占一个引擎

每个连接首次建立时,带来较大的引擎创建开销。

USER

每个用户独占一个引擎

开箱配置。

GROUP

每个资源组使用一个引擎

SERVER

每个集群使用一个引擎

隔离级别最低,需要管理员对集群安全性有足够把握。

正确配置 Kyuubi 引擎

Kyuubi 引擎本质是通过 spark-submit 提交的计算引擎,该引擎最终的配置定义,可以有多个来源,且遵循一定的优先级进行覆盖。

通过 spark-defaults.conf

与其他的 Spark 作业一样,Kyuubi 引擎的首要来源是 spark-defaults.conf 文件中的定义。

通过 kyuubi-defaults.conf

更进一步,Kyuubi 也支持在自身的 kyuubi-defaults.conf 配置文件中直接添加 spark 配置,在该文件中的配置定义,会覆盖 spark-defaults.conf 中的同名配置。

通过 JDBC Connection URL

如果您是通过 JDBC 方式使用 Kyuubi,可以直接在连接串中定义连接级别的相关配置;对于 Static SQL 与其他 Spark Core 配置(如 spark.executor.memory),如果本次连接会新建引擎实例,也会一并生效。

说明

相关配置文档可参考:
Spark Runtime SQL Configuration,每次连接均生效。
Static SQL and Spark Core Configuration,是否生效,取决于本次连接是否创建引擎实例。
Kyuubi 配置针对 Spark3 引擎设置 spark.dynamicAllocation.enabled 默认值为true, 您可以通过配置修改来关闭动态资源分配或调整其相关参数。
根据集群规格,Kyuubi 配置针对 Spark3 引擎设置一些资源配置参数spark.executor.coresspark.executor.memoryspark.driver.coresspark.driver.memory 默认值,您可以通过配置修改来更新相关参数。

通过 SET Syntax

该方式请参考官方文档Set Command

租户级别引擎配置

在 Kyuubi 中,为了支持更细粒度租户级别的引擎配置,在 kyuubi-defaults.conf 配置文件中,支持以*{username}*.{config_key}形式定义此类配置,在用户名的两侧需要有连续三个下划线_,并以.符号将具体config_key与前缀分隔开。
这种形式配置生效的时机,只发生在引擎创建时。它的优先级,高于spark-defaultskyuubi-defaults,但会被JDBC Connection URLSet Command提供的配置覆盖。
下面提供部分配置示例:

# For system defaults
spark.master=local
spark.sql.adaptive.enabled=true 

# For a user named kent
___kent___.spark.master=yarn
___kent___.spark.sql.adaptive.enabled=false 

# For a user named bob
___bob___.spark.master=spark://master:7077
___bob___.spark.executor.memory=8g

引擎复用与 Subdomain 定义

以下场景基于 USER 共享级别。
Kyuubi 提交的 Spark 引擎,会在作业完成之后存在一段时间,在引擎存活的期间,继续提交的作业可以直接复用原引擎,省去了引擎提交等待创建的开销,可以有效提升作业性能。该存活时间由配置kyuubi.session.engine.idle.timeout决定,默认时间是PT12H(即 12 小时)。
对于同一个用户,在实际的生产环境中,可能希望根据不同的作业类型,在不同的引擎中进行作业运行。在 Kyuubi 中,这样的需求可以通过配置kyuubi.engine.share.level.subdomain满足。
这是一个连接级别的配置,在对应连接配置参数中直接指定,就可以将本次连接的作业提交到不同的 subdomain 当中:

$ beeline -n user1 -u "jdbc:hive2://${kyuubi_server_address}:10009/biz1?kyuubi.engine.share.level.subdomain=biz1" -f query1.sql

$ beeline -n user1 -u "jdbc:hive2://${kyuubi_server_address}:10009/biz2?kyuubi.engine.share.level.subdomain=biz2" -f query2.sql

$ beeline -n user1 -u "jdbc:hive2://${kyuubi_server_address}:10009/biz3?kyuubi.engine.share.level.subdomain=biz3" -f query3.sql