本文实操环境是hadoop的cdh5.7版本,hive的认证方式是kerberos,kerberos的认证方式是基于客户机的,所以步骤可以分为两步:

1、dbeaver所在的机器完成kerberos认证

2、debaver通过jdbc连接hive

kerberos认证通过后在有效期之内,该机器都可以连接hive,但是要注意,机器重启后,认证可能会失效,过期或者失效之后重新执行认证命令即可。

一、kerberos认证

1、安装kerberos客户端

客户端下载地址如下:

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

 

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_服务器

下载完后点击安装即可。

2、cdh的认证文件准备

向cdh管理员索取krb5.keytab跟krb5.conf文件以及hive的用户名,krb5.conf文件默认路径为:/etc/krb5.conf

然后把krb5.conf文件的内容拷贝新建到文档krb5.ini,因为windows识别不到conf类型的配置文件。以下是我的krb5.ini的文件内容,我把它放到D:\krb5文件夹下:

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_客户端_02

3、配置环境变量

变量名:KRB5_CONFIG,变量值:D:\krb5\krb5.ini

变量名:KRB5CCNAME,变量值:C:\temp\krb5cache

KRB5CCNAME为认证成功后生成的认证缓存文件存放路径及文件名,要确保C:\temp路径存在,krb5cache是认证成功后自动生成的。

 

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_hive_03

4、进行认证

按住菜单键+R,输入cmd,打开dos操作界面

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_服务器_04

 

 

 

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_服务器_05

进入kerberos客户端的安装目录下的bin文件夹

我安装客户端使用的是默认安装路径,所以输入以下命令:

cd C:\Program Files\MIT\Kerberos\bin

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_客户端_06

然后根据krb5.keytab进行认证,命令格式如下:

kinit -kt krb5.keytab 用户名

需要注意如果krb5.keytab并不在当前目录C:\Program Files\MIT\Kerberos\bin,则需要补充路径,认证完毕之后,可以执行命令klist查看认证有效期以及生成的缓存文档。

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_服务器_07

 

 

 

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_hive_08

至此kerberos认证完毕。

二、dbeaver客户端配置

1、配置hosts文件

添加cdh各服务器的ip跟域名

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_hive_09

 

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_服务器_10

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_服务器_11

 

2、创建hive连接

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_客户端_12

编辑驱动设置,上传hive的驱动包,注意一定要跟服务器端的版本一直,不然会出现报错

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_客户端_13

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_客户端_14

添加完之后点击找到类,选择正确的驱动

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_客户端_15

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_hive_16

编辑URL模板,在后面加上内容“;principal=hive/{host}@EXAMPLE.COM”,注意{host}可以直接填写hiveserver2所在服务器的hostname代替,如:“;principal=hive/cdh1@EXAMPLE.COM”;@后面的内容是根据krb5.ini里面的default_realm值来填写。

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_hive_17

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_服务器_18

修改完之后点击确定保存,返回上层填写jdbc的连接信息,

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_服务器_19

 

 

如果在url模板中直接的内容为“;principal=hive/{host}@EXAMPLE.COM”,那么主机只能填写hive服务器的hostname,如果填写内容为“;principal=hive/cdh1@EXAMPLE.COM”,那么主机名可以使用hive服务器的hostname也可以使用hive服务器的ip,填写数据库名称以及用户名后点击确定保存设置,然后在左侧点击连接数据库:

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_hive_20

 

 

P.S.

1、jdbc链接的编写方式其实是由hive的配置文件hive-site.xml决定的,如图:

 

Kerberos下Dbeaver连接Hive 连接kerberos认证hive_客户端_21

把value中的_HOST替换成hive的hostname即为连接模板。

2、在dbeaver创建hive的连接过程中,如果一旦出错,最好删除该链接重新创建,不然会出现很多虚假问题。