DEMO-DBeaver连接带kerberos 认证的Hive

适用模块
客户端
具体说明
客户端工具对接集群
使用示例

本文基于mac os 系统测试编写,windows 配置仅可作为参数参考, Apple m1 机器也可参考本文

version info

mac os monterey 12.6
dbeaver 22.2.2
hive 2.1.1
hadoop 2.9.2

前置条件
  1. mac 系统本身集成有kerberos , 不需要额外进行安装
  2. 本机办公网络需要和连接环境集群网络连通,包含kdc 和hive server2 服务.( 在本机无法telnet 通kdc 及hiveserver 2对应端口,则无法连通)
  3. 拷贝将要连接kdc 集群的任意一台机器/etc/krb5.conf 配置文件到mac /etc/ 下,注意文件用户权限,需要dbeaver 启动用户有读权限
  4. 拷贝有权限认证hive 的keytab 到mac 任意路径,以及keytab对应的principal
  5. 准备jdbc连接串,dbeaver 支持单机连接,也支持通过zookeeper的高可用连接串

认证

在本机进行kerberos 认证
认证

 kinit -kt keytab  principal

Demo-DBeaver 连接带kerberos 认证的Hive - 图1
查看 Credentials cache,显示如下即为认证成功

klist -A

Demo-DBeaver 连接带kerberos 认证的Hive - 图2

认证清除
kdestroy
Demo-DBeaver 连接带kerberos 认证的Hive - 图3
需要注意的是,认证清除后,连接会出现问题。mac 在机器上认证一次后,会存储到身份认证缓存管理,本机其他服务皆可读取。重新认证后,需要重启dbeaver

DBeaver 启动配置调整

由于最新版本的dbeaver 使用jdk17 存在类加载问题,kerberos 相关配置无法通过连接配置增加,需要在dbeaver 启动配置中添加全局的jvm 参数
在应用程序中找dbeaver ,点击显示包路径 -> Eclipse -> dbeaver.ini
通过文件编辑器打开dbeaver.ini 文件,在 --add-modules=ALL-SYSTEM 参数后添加如下参数

--add-exports=java.security.jgss/sun.security.krb5=ALL-UNNAMED  ;jdk版本差异引起的方案,该配置为临时解决方案
-Dosgi.requiredJavaVersion=11  ;默认有的参数不需要添加
-Djavax.security.auth.useSubjectCredsOnly=false  ;解决krb5环境加载问题
-Djava.security.krb5.conf=/etc/krb5.conf
-Dsun.security.krb5.debug=true

需要注意的是,参数添加时如果添加在文件最后结尾,可能出现配置读取异常问题

完整配置文件参考Demo-DBeaver 连接带kerberos 认证的Hive - 图4

连接

重启dbeaver, 如果它在配置修改期间是启动的。
添加hive 连接,注意驱动设置可不用调整,使用其默认下载的驱动包即可进行连接,自行添加的驱动包,需要解决依赖问题
jdbc 连接串样例

-- zookeeper 连接串 jdbc:hive2://bigdata1:2182,bigdata2:2182,bigdata3:2182/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;principal=hive/_HOST@BDMS.COM
-- hiveserver2 连接串 jdbc:hive2://bigdata1:9999//default;principal=hive/_HOST@BDMS.COM

Demo-DBeaver 连接带kerberos 认证的Hive - 图5
驱动配置参考
Demo-DBeaver 连接带kerberos 认证的Hive - 图6

作者 清风徐来