Kyuubi 连接执行报错
问题
TBDS执行SparkSQL-Kyuubi报错
原因
一体化/云原生 kyuubi 连接串错误,例如:
- principal 写在 # 号后面,# 号前是 beeline 使用参数,如认证。
-
号后是 kyuubi server 使用参数
- 云原生场景下,多加了不必要的 yarn 参数。
解决方案
参考文档:示例工程开发
引擎共享等级
根据 kyuubi-defaults 配置文件中提供的 kyuubi.engine.share.level 配置,您可以定义 Kyuubi 服务的引擎共享级别。
支持的共享等级与相关含义说明如下所示:
| 共享级别 | 含义 | 备注 |
|---|---|---|
| CONNECTION | 每个 Session 独占一个引擎 | 每个连接首次建立时,带来较大的引擎创建开销。 |
| USER | 每个用户独占一个引擎 | 开箱配置。 |
| GROUP | 每个资源组使用一个引擎 | -- |
| SERVER | 每个集群使用一个引擎 | 隔离级别最低,需要管理员对集群安全性有足够把握。 |
租户级别引擎配置
在 Kyuubi 中,为了支持更细粒度租户级别的引擎配置,在 Kyuubi-defaults.conf 配置文件中,支持以___{username}__.{config_key}形式定义此类配置,在用户名的两侧需要有连续三个下划线,并以.符号将具体config_key与前缀分隔开。
这种形式配置生效的时机,只发生在引擎创建时。它的优先级,高于Spark-defaults与Kyuubi-defaults,但会被JDBC Connection URL与Set 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决定,默认时间是PT30M(即半小时)。
对于同一个用户,在实际的生产环境中,可能希望根据不同的作业类型,在不同的引擎中进行作业运行。在 Kyuubi 中,这样的需求可以通过配置kyuubi.engine.share.level.subdomain满足。
这是一个连接级别的配置,在对应连接配置参数中直接指定,就可以将本次连接的作业提交到不同的 subdomain 当中。
beeline -n user1 -p user1_password -u "jdbc:hive2://master-1-1:10009/biz1?kyuubi.engine.share.level.subdomain=biz1" \
-f query1.sql
beeline -n user1 -p user1_password -u "jdbc:hive2://master-1-1:10009/biz2?kyuubi.engine.share.level.subdomain=biz2" \
-f query2.sql
beeline -n user1 -p user1_password -u "jdbc:hive2://master-1-1:10009/biz3?kyuubi.engine.share.level.subdomain=biz3" \
-f query3.sql
Curl API接口出现问题

上述问题主要在Curl版本过低的情况下低版本Curl 不支持 SPNEGO,建议升级Curl的版本,测试环境下Curl版本>=7.71.1。