Spark连接Hive及Kerberos安全认证、dbeaver连接Hive及Kerberos安全认证【Windows环境】
1,Kerberos安全认证 (使用角度)
下载&安装
- 下载地址:https://kerberos.org/dist/kfw/4.1/kfw-4.1-amd64.msi
- 一路下一步,默认安装位置在 C:\Program Files\MIT\Kerberos\bin 下,可以调整安装路径
配置文件参数调整
-
将集群的/etc/krb5.conf 文件内容粘贴到 windows 配置文件 C:\ProgramData\MIT\Kerberos5\krb5.ini 中,如图所示
-
调整文件中的参数 default_ccache_name 设置cache的位置为 C:\temp\krb5cc,其他位置会导致权限有问题,无法生成票据
环境变量配置(连接dbeaver需要)
-
在系统变量Path 中 配置
C:\Program Files\MIT\Kerberos\bin
需要将其的位置,置顶(由于java中也有相似的命令)我们用到的是Kerberos中的 kinit、klist命令,如图 -
系统参数配置变量名:KRB5_CONFIG,变量值:C:\ProgramData\MIT\Kerberos5\krb5.ini
-
系统参数配置变量名:KRB5CCNAME,变量值:C:\temp\krb5cache (MIT票据缓存的地址),如图
KRB5CCNAME的路径默认是不存在的,因此需要在C盘下创建temp文件夹,krb5cache文件则不需要创建
配置hosts文件
- 配置windows下主机地址,服务器集群地址 /etc/hosts 内容粘贴到本地windows hosts中,如下图
重启
提示:其实在客户端安装好后,就提示重启。
这里任何修改配置文件或者环境变量的都需要重启,比如修改 C:\ProgramData\MIT\Kerberos5\krb5.ini中的内容,必须重启
2,配置dbeaver并采用安全认证连接Hive
在配置好Kerberos认证后,需要连接数据库连接工具连接Hive,此时选择dbeaver连接Hive
1,由于使用票据,没有用户名密码,所以要在dbeaver配置文件中配置连接信息
2,修改url地址,并选择驱动类
下载外置驱动,可参考下列文章
https://blog.csdn.net/fracly/article/details/121819030
修改配置文件
- 在程序安装目录找到 dbeaver.ini,并添加如下参数,需要调整的可能就是配置文件的位置啦,如果默认安装,则不需要调整
-Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.krb5.conf="C:\ProgramData\MIT\Kerberos5\krb5.ini" -Dsun.security.krb5.debug=true
修改连接参数
;AuthMech=1;KrbRealm=Sxxx.COM;KrbHostFQDN={host};KrbServiceName=hive;KrbAuthType=2
如图
重启 dbeaver,连接测试
3,本地IDEA创建spark项目kerberos认证方式连接Hive测试
将集群中的配置文件copy的程序的classpath下,如图
设置kerberos认证变量
System.setProperty("java.security.krb5.conf", "D:\\ideaProjects\\empi\\empi-spark\\src\\main\\resources\\krb5.ini");
System.setProperty("HADOOP_USER_NAME", "hive");
System.setProperty("user.name", "hive");
UserGroupInformation.loginUserFromKeytab("hive/node01.xxx.test@xxx.COM","D:\\ideaProjects\\empi\\empi-spark\\src\\main\\resources\\hive.service.keytab");