Kyuubi集成spark场景

2023-01-29 15:43:17 浏览数 (1)

客户端启动方式

基于kyuubi-server启动

${kyport}默认10009

代码语言:javascript复制
kyuubi-beeline  -u "jdbc:hive2://kyuubiserver:kyport/;user=hadoop"

基于zk-server启动

${zkport} 默认2181,推荐使用方式

代码语言:javascript复制
kyuubi-beeline -u "jdbc:hive2://zkserver:zkport/;user=hadoop?serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=kyuubi"

${kyuubiserver}:${kyport}见 kyuubi-defaults.conf 的 kyuubi.frontend.bind.port 配置。

${zkserver}:${zkport} 见 kyuubi-defaults.conf 的 kyuubi.ha.zookeeper.quorum 配置。

执行SQL

执行SQL文件

代码语言:javascript复制
kyuubi-beeline  -u "jdbc:hive2://zkhost:2181/;user=hadoop" -f 1.sql

交互式执行

代码语言:javascript复制
jdbc:hive2://ip:port> create table kyuubi_test(code int,name string);
 --------- 
| Result  |
 --------- 
 --------- 
No rows selected (0.302 seconds)
jdbc:hive2://ip:port> show tables;
 ----------- ---------------- -------------- 
| database  |   tableName    | isTemporary  |
 ----------- ---------------- -------------- 
| default   | kyuubi_test    | false        |
 ----------- ---------------- -------------- 
1 row selected (0.101 seconds)

引擎共享级别

服务端级别

kyuubi-defaults.conf中设置kyuubi.engine.share.level(系统默认为USER,可以设置参数详见表1.1),此设置为集群默认共享级别。

客户端级别

用户可以提交自定义共享级别(覆盖服务端的默认设置),在JdbcUrl中设置kyuubi.engine.share.level(可以设置参数详见表1.1),示例命令如下

代码语言:javascript复制
kyuubi-beeline  -u "jdbc:hive2://zkhost:2181/;user=hadoop?kyuubi.engine.share.level=CONNECTION"

配置参数参考

共享级别

语义

适用场景

隔离程度

共享程度

CONNECTION

每个Session启动一个引擎

大规模ETL

USER

每个用户一个引擎

Ad-hoc查询

GROUP

每个资源组一个引擎

Ad-hoc查询

SERVER

每个集群一个引擎

不建议生产

不建议生产

表1.1

引擎超时设置

启动一个引擎后,在引擎激活状态下,其他新提交的任务可以快速提交到该引擎并运行任务,当引擎超过闲置时间,系统将会回收引擎资源,再次提交则需要重新启动一个引擎。闲置时间参数kyuubi.session.engine.idle.timeout默认PT30M (30 min)

服务端设置

kyuubi-defaults.conf中设置kyuubi.session.engine.idle.timeout,此设置为集群默认超时时间。

客户端设置

用户可以提交自定义引擎超时时间(覆盖服务端的默认设置),在JdbcUrl中设置kyuubi.session.engine.idle.timeout,示例命令如下

代码语言:javascript复制
kyuubi-beeline  -u "jdbc:hive2://zkhost:2181/;user=hadoop?kyuubi.session.engine.idle.timeout=PT10M"

配置参数参考

参数

默认值

语义

生效版本

kyuubi.session.engine.check.interval

PT5M

检查时间

1.0.0

kyuubi.session.engine.idle.timeout

PT30M

超时时间

1.0.0

客户端子域设置

当引擎级别为USER、GROUP、SERVER时,用户可通过配置实现单个(USER、GROUP、SERVER)实例下多个独立引擎实例。例如kyuubi.engine.share.level=USER,同一个用户通过业务隔离引擎,在JdbcUrl中设置kyuubi.engine.share.level.subdomain,示例如下:

代码语言:javascript复制
kyuubi-beeline  -u "jdbc:hive2://zkhost:2181/;user=hadoop?kyuubi.engine.share.level.subdomain=sd1"
kyuubi-beeline  -u "jdbc:hive2://zkhost:2181/;user=hadoop?kyuubi.engine.share.level.subdomain=sd2"

Spark资源参数

参数设置分为3层,spark引擎设置 $SPARK_HOME/conf/spark-defaults.conf ;kyuubi引擎设置$KYUUBI_HOME/conf/kyuubi-defaults.conf,其中kyuubi设置可以覆盖spark设置。示例如下

服务端设置

配置spark服务级别的环境参数

代码语言:javascript复制
spark.dynamicAllocation.enabled=false
spark.executor.memory=3g
spark.executor.cores=2
spark.executor.instances=10

配置用户级别的环境参数

代码语言:javascript复制
# For a user named hadoop
___hadoop___.spark.dynamicAllocation.enabled=false
___hadoop___.spark.executor.memory=5g
___hadoop___.spark.executor.cores=2
___hadoop___.spark.executor.instances=10

客户端设置

代码语言:javascript复制
kyuubi-beeline  -u "jdbc:hive2://zkhost:2181/;user=hadoop?spark.dynamicAllocation.enabled=false;spark.executor.cores=2;spark.executor.memory=4g;spark.executor.instances=4"

SparkDRA配置

参数设置分为3层,spark引擎设置 $SPARK_HOME/conf/spark-defaults.conf ;kyuubi引擎设置$KYUUBI_HOME/conf/kyuubi-defaults.conf,其中kyuubi设置可以覆盖spark设置。示例如下

服务端设置

spark服务级别建议配置,配置地址$SPARK_HOME/conf/spark-defaults.conf

代码语言:javascript复制
spark.dynamicAllocation.enabled=true
##false if perfer shuffle tracking than ESS
spark.shuffle.service.enabled=true
spark.dynamicAllocation.initialExecutors=10
spark.dynamicAllocation.minExecutors=10
spark.dynamicAllocation.maxExecutors=500
spark.dynamicAllocation.executorAllocationRatio=0.5
spark.dynamicAllocation.executorIdleTimeout=60s
spark.dynamicAllocation.cachedExecutorIdleTimeout=30min
# true if perfer shuffle tracking than ESS
spark.dynamicAllocation.shuffleTracking.enabled=false
spark.dynamicAllocation.shuffleTracking.timeout=30min
spark.dynamicAllocation.schedulerBacklogTimeout=1s
spark.dynamicAllocation.sustainedSchedulerBacklogTimeout=1s
spark.cleaner.periodicGC.interval=5min

kyuubi用户级别配置,配置地址$KYUUBI_HOME/conf/kyuubi-defaults.conf

代码语言:javascript复制
# For a user named hadoop
___hadoop___.spark.dynamicAllocation.maxExecutors=20
# For a user named hive
___hive___.spark.dynamicAllocation.maxExecutors=600

如上,hadoop可并行的executor不可超过20,hive可并行的excutor不可超过600

客户端设置

代码语言:javascript复制
kyuubi-beeline  -u "jdbc:hive2://zkhost:2181/;user=hadoop?spark.sql.shuffle.partitions=2;spark.executor.memory=5g"

客户端设置生效范围:

Runtime SQL Configuration:实时生效

Static SQL and Spark Core Configuration: 如果当前提交新启一个引擎有效,延用已存引擎则无效

0 人点赞