Kyuubi1.6.0+Spark3.0.0部署

Kyuubi1.6.0是支持Spark3.0.0的最后一个版本,再往上需要更高的Spark版本,我这里就没再测试。

一、下载Kyuubi与Spark

Kyuubi下载地址:https://archive.apache.org/dist/incubator/kyuubi/kyuubi-1.6.0-incubating/apache-kyuubi-1.6.0-incubating-bin.tgz

由于我这里的集群是ambari安装的,默认Spark版本为Spark2,因此需要配置一下Spark的环境,下载Spark3.0.0的安装包,百度云连接在这里:

链接:https://pan.baidu.com/s/1ZdM5IOyHoE52-KMd_EoMYg?pwd=6666 
提取码:6666 

二、配置Spark3与Kyuubi

2.1配置Spark(非ambari安装的就省略吧,直接解压spark3)

1.下载好上面spark3的包,解压

unzip spark3.zip

2.然后cd spark3 执行

tar -xvf spark-3.0.0-bin-hadoop3.2.tgz

mv spark-3.0.0-bin-hadoop3.2 spark3

cp ../jars/*  spark3/jars/

mv spark3 /usr/hdp/3.1.0.0-78/

3.将/usr/hdp/3.1.0.0-78/spark2/conf下的配置文件spark-env.sh和spark-defaults.conf复制到
/usr/hdp/3.1.0.0-78/spark3/conf路径下
4.在spark-defaults.conf这个文件中添加
    spark.driver.extraJavaOptions -Dhdp.version=3.1.0.0-78
    spark.yarn.am.extraJavaOptions -Dhdp.version=3.1.0.0-78

测试一下好不好使,提交个测试任务到yarn

/usr/hdp/3.1.0.0-78/spark3/bin/spark-submit --master yarn --name spark-pi --class org.apache.spark.examples.SparkPi /usr/hdp/3.1.0.0-78/spark3/examples/jars/spark-examples_2.11-2.3.2.3.1.0.0-78.jar

2.2配置Kyuubi

1.下载好上面Kyuubi的包,我这里上传到了/home/tools,解压

tar -xvf apache-kyuubi-1.6.0-incubating-bin.tgz

mv apache-kyuubi-1.6.0-incubating-bin.tgz kyuubi-1.6.0

cd kyuubi-1.6.0/conf

cp kyuubi-defaults.conf.template kyuubi-defaults.conf

cp kyuubi-env.sh.template kyuubi-env.sh

2.首先配置kyuubi-env.sh,按照实际的路径写

export JAVA_HOME=/usr/java/jdk1.8.0_271-amd64
export SPARK_HOME=/usr/hdp/3.1.0.0-78/spark3
export HADOOP_CONF_DIR=/usr/hdp/3.1.0.0-78/hadoop/etc/hadoop

3.配置kyuubi-defaults.conf(重点来了,我的集群是kerberos权限,hive是ladp认证)

kyuubi.ha.enabled        true
kyuubi.ha.client.class   org.apache.kyuubi.ha.client.zookeeper.ZooKeeperDiscoveryClient
kyuubi.ha.namespace      kyuubi_cluster
kyuubi.ha.zookeeper.quorum    zk1,zk2,zk3
kyuubi.ha.client.port    2181
kyuubi.ha.zookeeper.auth.type    KERBEROS
kyuubi.ha.zookeeper.auth.principal    zookeeper/HOST@HADOOP.COM
kyuubi.ha.zookeeper.auth.keytab        /etc/xxxx.keytab

kyuubi.authentication                       LDAP
kyuubi.authentication.ldap.url    ldap://xx.xxx.xx.xx:389
kyuubi.authentication.ldap.base.dn    ou=people,dc=hadoop,dc=com
kyuubi.kinit.principal                      hive/HOST@HADOOP.COM 
kyuubi.kinit.keytab                         /etc/security/keytabs/hive.service.keytab
kyuubi.frontend.bind.host       xx.xxx.xx.xx
kyuubi.frontend.bind.port       10009

要是不配高可用kyuubi.ha那堆就可以省略了,如果配了,集群是KERBEROS权限的话,直接把ZK节点下面的那个keytab文件拿过来用,ambari安装的一般在/etc/security/keytabs/zk.service.keytab,没有去生成一下

kyuubi.kinit.principal和kyuubi.kinit.keytab是认证集群权限的,你这用户需要可以提交到yarn,可以访问hive,我这里偷懒就用了hive,也可以新建kyuubi用户,然后授权,principal必须为三段式命名,类似我上面写的,不过多介绍了,keytab就是与之对应的验证文件。而且hadoop必须要有以下配置,如下图

hadoop.proxyuser.用户.groups 设置为*就可以

hadoop.proxyuser.用户.hosts 可以为*或者具体的主机名,逗号隔开

这里别的用户我也尝试了,死活不成功,只有hive成功了,不知道什么原因哈,用别的用户就会出现xxxxxx is not allowed to impersonate xxxxxx,奇了怪了,后面解决了我再更新哈,暂时先用hive

kyuubi登录设置为ladp验证,正好和hive一样,这三个

kyuubi.authentication                       LDAP
kyuubi.authentication.ldap.url    ldap://xx.xxx.xx.xx:389
kyuubi.authentication.ldap.base.dn    ou=people,dc=hadoop,dc=com

三、启动Kyuubi

1.以上都设置好后就可以启动了,进入到kyuubi-1.6.0/bin

./kyuubi start

2.beeline连接

./beeline -u 'jdbc:hive2://xxxx.xxx.xxx.xxx:10009/' -n用户名 -p密码

这里的用户名密码就是ldap添加的,这样就是实现了多租户管理。

如果你配置了高可用的话,beeline要写下面的

beeline -u "jdbc:hive2://zk1:2181,zk2:2181,zk3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=xxxxxxx"(这里的zooKeeperNamespace是你在kyuubi-defaults.conf设置的kyuubi.ha.namespace)

spark参数设置详见Deploy Kyuubi engines on Yarn — Apache Kyuubi

我这里也设置了一些,大家可以参考,常见的也就这些

beeline -u "jdbc:hive2://xxxxxxx:10009/xxxxxxx?spark.yarn.queue=xxxxxx;spark.driver.memory=40g;spark.executor.memory=20g;spark.executor.cores=10;spark.executor.instances=20"(spark.executor.instances就是spark里面的spark.num.executors)

下面的kyuubi-defaults.conf里面的参数

kyuubi.engine.share.level        (CONNECTION用户不共享连接,USER同一用户共享连接)
kyuubi.session.force.cancel        true(当你把beeline那个ctrl+c之后,yarn上提交的任务会自动kill掉,这个就比较好了)

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Kyuubi一个开源的Spark SQL JDBC服务器,它允许通过JDBC连接来访问和查询Spark SQL。下面是使用Kyuubi JDBC连接Spark的步骤: 1. 首先,确保你已经下载并安装了Kyuubi服务器。你可以从Apache官方网站下载Kyuubi的发行版本。 2. 启动Kyuubi服务器。你可以使用以下命令启动Kyuubi服务器: ```shell ./bin/kyuubi-start.sh ``` 3. 在你的Java或Scala代码中,使用JDBC连接字符串连接到Kyuubi服务器。连接字符串的格式如下: ``` jdbc:hive2://<kyuubi-server-host>:<kyuubi-server-port>/<database-name> ``` 其中,`<kyuubi-server-host>`是Kyuubi服务器的主机名或IP地址,`<kyuubi-server-port>`是Kyuubi服务器的端口号,`<database-name>`是要连接的数据库名称。 例如,如果Kyuubi服务器运行在本地主机的10000端口,并且你要连接到名为"mydatabase"的数据库,连接字符串将如下所示: ``` jdbc:hive2://localhost:10000/mydatabase ``` 4. 使用合适的JDBC驱动程序连接到Kyuubi服务器。你可以使用Apache Hive提供的JDBC驱动程序,或者使用其他支持HiveServer2协议的JDBC驱动程序。 在Java中,你可以使用以下代码连接到Kyuubi服务器: ```java import java.sql.*; public class KyuubiJdbcExample { public static void main(String[] args) { String jdbcUrl = "jdbc:hive2://localhost:10000/mydatabase"; String username = "your-username"; String password = "your-password"; try (Connection connection = DriverManager.getConnection(jdbcUrl, username, password)) { // 连接成功,可以执行SQL查询和操作 // ... } catch (SQLException e) { e.printStackTrace(); } } } ``` 在Scala中,你可以使用以下代码连接到Kyuubi服务器: ```scala import java.sql.DriverManager import java.sql.Connection object KyuubiJdbcExample { def main(args: Array[String]): Unit = { val jdbcUrl = "jdbc:hive2://localhost:10000/mydatabase" val username = "your-username" val password = "your-password" try { val connection = DriverManager.getConnection(jdbcUrl, username, password) // 连接成功,可以执行SQL查询和操作 // ... connection.close() } catch { case e: Exception => e.printStackTrace() } } } ``` 请注意,你需要将`your-username`和`your-password`替换为实际的用户名和密码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值