Windows下Dbeaver连接设置Kerberos后的Hive和Phoenix

安装Kerberos客户端

下载地址

https://web.mit.edu/kerberos/dist/index.html

安装运行后会生成配置文件

配置文件的路劲和安装路径无关,是固定的。

C:\ProgramData\MIT\Kerberos5\krb5.ini

下载服务其上的krb5.conf配置文件,

krb5.conf配置文件的内容复制到C:\ProgramData\MIT\Kerberos5\krb5.ini里,并且删除[libdefaults]上边的内容。

保留部分例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[libdefaults]
dns_lookup_realm = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
default_realm = HADOOP.COM

[realms]
HADOOP.COM = {
kdc = hadoop01
admin_server = hadoop01
}

[domain_realm]
.hadoop.com = HADOOP.COM
hadoop.com = HADOOP.COM

创建路径:C:\temp

配置环境变量:

C:\temp\krb5cache的路径默认是不存在的,只需要默认创建C:\temp即可,krb5cache是kerberos认证后自动生成的

变量名 变量值
KRB5_CONFIG C:\ProgramData\MIT\Kerberos5\krb5.ini
KRB5CCNAME C:\temp\krb5cache

配置完环境变量后,重启计算机使其生效。

登录

具体步骤

下载keytab文件

C:\ProgramData\MIT\Kerberos5\hdfs.keytab

进入安装目录

1
cd D:\Tools\KerberosClient\bin

推荐添加到环境变量Path中

CMD中运行

1
kinit -kt C:\ProgramData\MIT\Kerberos5\hdfs.keytab hdfs/hadoop01@HADOOP.COM

查看是否登录成功:

1
klist

可以看到

image-20230810144350952

登录MIT Kerberos Ticket Manager客户端查看

image-20230810122850530

这样就登录成功了

问题

kinit和klist可能系统中有。

我们可以通过如下命令获取生效的顺序

1
2
where klist
where kinit

如图

image-20230810143338229

我们发现klist生效的不是我们设置的,这就要改变环境变量Path中的顺序

D:\Tools\KerberosClient\bin放在系统变量Path的最前面。

注意

优先级:系统变量>用户变量,设置后需要重启电脑。

重启后

image-20230810144156583

连接Hive

目前使用22.0.3成功了,使用23.0.4一直不成功。

步骤

在配置文件D:\Tools\dbeaver\dbeaver.ini最后添加

1
2
3
-Djavax.security.auth.useSubjectCredsOnly=false
-Djava.security.krb5.conf=C:\ProgramData\MIT\Kerberos5\krb5.ini
-Dsun.security.krb5.debug=true

注意

地址不要加双引号

连接设置 => 编辑驱动设置

把URL模板

1
jdbc:hive2://{host}[:{port}][/{database}]

修改为

1
jdbc:hive2://{host}[:{port}][/{database}]/;principal=hdfs/{host}@HADOOP.COM

完整的地址

1
jdbc:hive2://192.168.7.101:10000/zdb/;principal=hdfs/hadoop01@HADOOP.COM

需要把hdfs-site.xmlcore-site.xml这两个配置文件放在jar的同级目录。

连接Phoenix

打开dbever的安装路径下的dbeaver.ini配置文件,加上

1
2
3
-vm
D:\Tools\Java\jdk1.8.0_102\bin
-Djava.security.auth.login.config=C:/ProgramData/MIT/Kerberos5/jaas.conf

hdfs-site.xmlcore-site.xmlhbase-site.xml,并且将三个xml配置文件拷贝到依赖Jar包同级目录下

1
jdbc:phoenix:hadoop01,hadoop02,hadoop03:/hbase:hdfs/hadoop01@HADOOP.COM:C:\ProgramData\MIT\Kerberos5\hdfs.keytab

添加配置参数:

在连接属性中设置如下参数,与集群中保持一致:

1
2
phoenix.schema.isNamespaceMappingEnabled=true
phoenix.schema.mapSystemTablesToNamespace=true

其中jaas.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Server {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/data/tools/bigdata/kerberos/hdfs.keytab"
storeKey=true
useTicketCache=false
principal="zookeeper/hadoop01@HADOOP.COM";
};

Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="C:/ProgramData/MIT/Kerberos5/hdfs.keytab"
storeKey=true
useTicketCache=false
principal="cli@HADOOP.COM";
};