You need to enable JavaScript to run this app.
湖仓一体分析服务 LAS 私有化

湖仓一体分析服务 LAS 私有化

复制全文
Kyuubi
高阶特性
复制全文
高阶特性

引擎支持

当前版本 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
最近更新时间:2025.04.01 20:13:41
这个页面对您有帮助吗?
有用
有用
无用
无用