Demo-DBeaver 连接带kerberos 认证的Hive
更新时间: 2024-03-11 02:49:01
阅读 5154
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
前置条件
- mac 系统本身集成有kerberos , 不需要额外进行安装
- 本机办公网络需要和连接环境集群网络连通,包含kdc 和hive server2 服务.( 在本机无法telnet 通kdc 及hiveserver 2对应端口,则无法连通)
- 拷贝将要连接kdc 集群的任意一台机器/etc/krb5.conf 配置文件到mac /etc/ 下,注意文件用户权限,需要dbeaver 启动用户有读权限
- 拷贝有权限认证hive 的keytab 到mac 任意路径,以及keytab对应的principal
- 准备jdbc连接串,dbeaver 支持单机连接,也支持通过zookeeper的高可用连接串
认证
在本机进行kerberos 认证
认证
kinit -kt keytab principal
查看 Credentials cache,显示如下即为认证成功
klist -A
认证清除
kdestroy
需要注意的是,认证清除后,连接会出现问题。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
需要注意的是,参数添加时如果添加在文件最后结尾,可能出现配置读取异常问题
完整配置文件参考
连接
重启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
驱动配置参考
作者 清风徐来
文档反馈
以上内容对您是否有帮助?