背景:由于工作需要,当前分析研究的数据基于Hadoop的Hive数据库中,且Hadoop服务端无权限进行操作且使用安全模式,在研究了Dbeaver、Squirrel和Hue三种连接Hive的工具,在无法绕开useKey认证的情况下,只能使用DBeaver工具进行远程连接。
【Hadoop环境】:Hive版本:3.1.0 KrbClient版本:1.17
【JDK版本】:1.8.0_181
一、 配置 Windows 的 kerberos 认证
注:由于当前Hadoop服务算使用FusionInsight安全模式需要使用kerberos进行认证,如果使用 FusionInsight非安全模式进行对接不需要使用 kerberos认证。
- 前置条件:已完成 FusionInsight HD V100R002C70SPC200 的安装,包含 KrbServer 组件。
- 配置kerberos认证步骤 1 下载并安装 MIT Kerberos 下载网址:http://web.mit.edu/kerberos/dist/。 版本与操作系统位数保持一致,本文版本 kfw-4.1-amd64.msi。 安装路径:C:\Program Files\MIT\Kerberos(默认路径)步骤 2同步客户端机器的时间 与 FusionInsight HD 集群的时间一致,时间差要小于 5 分钟。步骤 3 设置 Kerberos 的配置文件 登录FusionInsight服务端页面,点击右上角“用户名”->“下载认证凭据”后保存至本地解压,获取
krb5.conf
和user.keytab
文件。 C盘创建文件目录ecotesting/Fiber/conf
文件夹目录(目录创建可自定义,但需记住文件的绝对路径,如C:/ ecotesting/Fiber/conf
),将krb5.conf
和user.keytab
文件负责到当前conf文件夹下。 复制krb5.conf
文件,修改文件后缀为.ini
,保存文件为krb5.ini
(注意,在windows中设置显示文件后缀,不然文件可能保存为krb5.ini.txt文件)。 将krb5.ini文件复制到如下目录中:“C:\Program Files\MIT\Kerberos
”、“C:\Windows
”、“C:\ProgramData\MIT\Kerberos5
”。其中“C:\ProgramData\MIT\Kerberos5
”为系统隐藏文件夹,直接输入路径可进入。步骤 4 设置 Kerberos 票据的缓存文件和环境变量 创建存放票据的目录,例如“C:\temp
”。设置 Windows 的系统环境变量,变量名为“KRB5CCNAME
”,变量值为“C:\temp\krb5cache
”;变量名为“KRB5_CONFIG
”,变量值为“C:/ ecotesting/Fiber/conf/krb5.ini
”。配置完成后,重启机器。
步骤 5 在 Windows 上进行认证
(1)使用客户端进行认证
打开 MIT Kerberos,单击“get Ticket”,在弹出的 MIT Kerberos: Get Ticket 窗口中,Pricipal 输入用户名(如:
[email protected]
),Password 输入密码,单击“OK”。
(2)通过命令行进行认证
打开windows命令行窗口,进入到MIT安装目录(如:
C:\Program Files\MIT\Kerberos\bin
),使用keytab文件进行认证,并查看认证信息是否正确以及认证缓存文件是否生成。
认证命令:
kinit –kt keytabPath principle
(keytabPath为keytab文件所在路径,principle为认证用户名)
如:
kinit –kt C:/ ecotesting/Fiber/conf/user.keytab gzdsj_ruixin
二、 安装Dbeaver客户端
- 下载并安装 DBeaver 由于本地jdk版本为1.8.0_181,考虑到版本兼容性,下载DBeaver版本为21.1.1版本。PS:勿安装最新版本22.3.4版
- 在windows hosts文件中添加集群的ip和域名 登录FusionInsight服务端页面,选择主页—集群—集群名,右击选择“下载客户端”,然后选择“仅下载配置文件”,下载至本地后解压,复制
hosts
至本地“C:\Windows\System32\drivers\etc
”进行替换。 - 创建Zookeeper认证文件 在
C:\ecotesting\Fiber\conf
目录下新建jaas.conf
文件,配置认证的用户和密码。文件内容如下:
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="C:\\ecotesting\\Fiber\\conf\\user.keytab"principal="gzdsj_ruixin"useTicketCache=false
storeKey=true
debug=true;};
注意: 其中keyTab参数以及principal参数为对应的认证用户名以及认证文件路径。
- 修改DBeaver配置文件dbeaver.ini文件 指定Dbeaver使用的JDK虚拟机,添加(注意,参数和值之间需要换行)
-vm
C:\Program Files\Java\jdk1.8.0_181\bin
添加认证配置信息:
-Djava.security.auth.login.config=C:\\ecotesting\\Fiber\\conf\\jaas.conf
-Dzookeeper.sasl.clientconfig=Client
-Dzookeeper.auth.type=kerberos
-Dzookeeper.server.principal=zookeeper/hadoop.hadoop.com
- 重启DBeaver. 修改
dbeaver.ini
后需要重启DBeaver才生效。 - 获取org.apache.hive.jdbc.HiveDriver驱动依赖jar包 在Linux中Hive客户端安装路径下获取HiveDriver驱动依赖jar包。进入
/opt/client/Hive/Beeline/
目录下,下载lib
文件夹至DBeaver安装路径(默认为C:\Program Files\Dbeaver
)下。
三、 使用自定义JDBC对接Hive
- 进入DBeaver界面,菜单选择Database->DriverManager,在弹出的对话框中点击 New.
- 新建的连接名字为FI-hive-test,连接信息如下,完成后点击OK
说明:
- org.apache.hive.jdbc.HiveDriver
2.jdbc:hive2://172.16.4.121:24002,172.16.4.122:24002,172.16.4.123:24002/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;sasl.qop=auth-conf;auth=KERBEROS;principal=hive/[email protected]
(具体信息可Linux中的Hive客户端通过beeline连接成功打印的日志中截取复制使用)
- Hadoop
- 点Add File在下载好的hive客户端lib中把所有jar包加进去
- 菜单栏选择File->New->Database Connection.点击 Next.
- 选择FI-hive-test点击NEXT
- 点击Finish
- 右键选择FI-hive-test点击Edit Connection
- 点击Test connection
版权归原作者 闲小憨 所有, 如有侵权,请联系我们删除。