1、dbeaver所在的机器完成kerberos认证
2、debaver通过jdbc连接hive
kerberos认证通过后在有效期之内,该机器都可以连接hive,但是要注意,机器重启后,认证可能会失效,过期或者失效之后重新执行认证命令即可。
一、kerberos认证
1、安装kerberos客户端
客户端下载地址如下:
https://web.mit.edu/kerberos/dist/index.html
下载完后点击安装即可。
2、cdh的认证文件准备
向cdh管理员索取krb5.keytab跟krb5.conf文件以及hive的用户名,krb5.conf文件默认路径为:/etc/krb5.conf
然后把krb5.conf文件的内容拷贝新建到文档krb5.ini,因为windows识别不到conf类型的配置文件。以下是我的krb5.ini的文件内容,我把它放到D:\krb5文件夹下:
3、配置环境变量
变量名:KRB5_CONFIG,变量值:D:\krb5\krb5.ini
变量名:KRB5CCNAME,变量值:C:\temp\krb5cache
KRB5CCNAME为认证成功后生成的认证缓存文件存放路径及文件名,要确保C:\temp路径存在,krb5cache是认证成功后自动生成的。
4、进行认证
按住菜单键+R,输入cmd,打开dos操作界面
进入kerberos客户端的安装目录下的bin文件夹
我安装客户端使用的是默认安装路径,所以输入以下命令:
cd C:\Program Files\MIT\Kerberos\bin
然后根据krb5.keytab进行认证,命令格式如下:
kinit -kt krb5.keytab 用户名
需要注意如果krb5.keytab并不在当前目录C:\Program Files\MIT\Kerberos\bin,则需要补充路径,认证完毕之后,可以执行命令klist查看认证有效期以及生成的缓存文档。
至此kerberos认证完毕。
二、dbeaver客户端配置
1、配置hosts文件
添加cdh各服务器的ip跟域名
2.修改DBeaver配置
因为DBeaver通过JDBC的方式访问Hive,底层也是基于Java环境,所以这里需要在DBeaver的配置中增加JVM的参数,主要添加关于Kerberos相关的配置。
1.进入DBeaver的安装目录,找到dbeaver.ini配置文件,在配置文件末尾增加如下配置:
-Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.krb5.conf="C:\ProgramData\MIT\Kerberos5\krb5.ini" -Dsun.security.krb5.debug=true
2.重新启动DBeaver客户端
3、创建hive连接
编辑驱动设置,上传hive的驱动包,注意一定要跟服务器端的版本一直,不然会出现报错
添加完之后点击找到类,选择正确的驱动
编辑URL模板,在后面加上内容“;principal=hive/{host}@EXAMPLE.COM”,注意{host}可以直接填写hiveserver2所在服务器的hostname代替,如:“;principal=hive/[email protected]”;@后面的内容是根据krb5.ini里面的default_realm值来填写。
修改完之后点击确定保存,返回上层填写jdbc的连接信息,
如果在url模板中直接的内容为“;principal=hive/{host}@EXAMPLE.COM”,那么主机只能填写hive服务器的hostname,如果填写内容为“;principal=hive/[email protected]”,那么主机名可以使用hive服务器的hostname也可以使用hive服务器的ip,填写数据库名称以及用户名后点击确定保存设置,然后在左侧点击连接数据库:
P.S.
1、jdbc链接的编写方式其实是由hive的配置文件hive-site.xml决定的,如图:
把value中的_HOST替换成hive的hostname即为连接模板。
2、在dbeaver创建hive的连接过程中,如果一旦出错,最好删除该链接重新创建,不然会出现很多虚假问题。
参考:https://cloud.tencent.com/developer/article/1377164
参考:https://www.cnblogs.com/fivedays/p/12808488.html