数新网络,让每个人享受数据的价值https://xie.infoq.cn/link?target=https%3A%2F%2Fwww.datacyber.com%2F
概述
本文将介绍在华为云 FusionInsight MRS(Managed Relational Service)的Kerberos环境中,如何使用Java和DBeaver实现远程连接Hive的方法。
JAVA 方式
一、测试环境信息
**1.**MRS 3.1.5 安全集群(开启kerberos)
**2.**windows 11 64位,需要和MRS集群网络互通
3. IntelliJ IDEA 2022.3.2
二、创建角色和用户
1. 登录MRS管理控制台页面。
**2.**单击"集群列表",在"现有集群"列表,单击指定的集群名称,进入集群信息页面。
**3.**单击"集群管理页面"后的"前往Manager",打开Manager页面。
**a.**在弹性公网IP下拉框中选择可用的弹性公网IP或单击"管理弹性公网IP"购买弹性公网IP,并进行绑定。
b. 勾选"我确认xx.xx.xx.xx为可信任的公网访问IP,并允许从该IP访问MRS Manager页面",如下图:

**4.**点击"确定",进入Manager登录页面。
**5.**输入创建集群时默认的用户名"admin"及设置的密码,点击"登录"进入Manager页面。
**6.**在Manager 界面选择"系统 > 权限 > 角色",如下图:

**7.**点击"添加角色",如下图:

填写如下信息:
· 角色名称:例如mrrole。
· 配置资源权限:选择"HDFS > 文件系统 ",勾选"权限"列的"读"、"写"和"执行",勾选完全后,不要单击确认,要单击如下图的待操作的集群名,再进行后面权限的选择,其余产品也是类似操作,直至全部产品权限都已选择完成。

**8.**选择"系统 > 权限 > 用户组 > 添加用户组",为样例工程创建一个用户组,例如mrgroup,如下图:

**9.**选择"系统 > 权限 > 用户 > 添加用户",为样例工程创建一个用户,最后点击"确定"完成用户创建。如下图:
· 用户名:例如test,当需要执行Hive程序时,请设置用户名为"hiveuser"。
· 用户类型:"人机"用户。
· 密码:输入密码(特别注意该密码在后面运行程序时要用到)
· 用户组:加入用户组mrgroup和supergroup。
· 主组:设置其"主组"为supergroup,
· 角色:绑定角色mrrole取得权限。

**10.**选择"系统 > 权限 > 用户",选择新建用户test,选择"更多 >下载认证凭据",保存后解压得到用户的keytab文件与krb5.conf文件。

11. ECS 登录kerberos用户,第一次登录会默认重置密码的


注意:
· 如果在部署MRS服务的ECS上使用密码登录需要先进行密码重置,重置密码不可以与添加用户的一致。重置过后需重新下载认证凭证。
三、准备工作
1. 下载hive客户端配置
**a.**登录MRS管理控制台页面
**b.**单击"集群列表 > 现有集群",在集群列表中单击指定的集群名称,进入集群信息页面。
**c.**输入账号密码进入Manager页面
**d.**选择"主页 -> hive -> 更多-下载客户端"


**e.**选择完成客户端 ->x86_64-> 确定,下载到本地windows环境下

**f.**下载完成后打开此文件

**g.**根据如下图片中的目录将jdbc文件复制到本地

2. 下载keytab 文件
**a.**登录MRS管理控制台页面
b. 单击"集群列表 > 现有集群",在集群列表中单击指定的集群名称,进入集群信息页面。
**c.**输入账号密码进入Manager页面
**d.**选择系统->更多->下载认证凭证,下载到本地windows环境下

**e.**将下载到本地的krb5.conf 文件内的地址修改为外网地址
3. 查看系统生成principal
**a.**登录到MRS集群ECS服务器,执行如下命令


**b.**执行如下命令,查看系统principal


4. idea 引入本地依赖
**a.**打开创建好的maven项目,创建lib 文件夹,将JDBC文件夹内的jar放入lib目录下


**b.**点击flie -> Project Stucture-> Moduies


c. 选择文件夹然后点击OK

d. 勾选上选择的文件,然后点击apply->ok

**e.**加载完成

5. idea 引入配置文件
**a.**将修改完成的krb5.conf 导入至resources
**b.**将user.keytab导入至resources

四、JAVA 代码示例
1. 华为云使用代码连接kerberos Hive URL 示例
**a.**HiveServer2 连接URL示例

o {host}:弹性公网地址或内网地址
o {port}:hiveserver2 端口,默认10000
o {yousystemuser}:创建MRS集群系统为每个产品生成的principal,查看方式参考"系统生成principal"
o {youruser}:在"创建角色和用户"创建的用户名称(注:无需跟realm也可以)
o {yourkeytabpath}:自己用户的keytab文件路径,keytab下载方式参考"下载keytab文件"
**b.**Zookeeper 连接URL示例

o {host}:弹性公网地址或内网地址
o {port}:zookeeper 端口,默认2181
o {yousystemuser}:创建MRS集群系统为每个产品生成的principal,查看方式参考"系统生成principal"
o {youruser}:在"创建角色和用户"创建的用户名称(注:无需跟realm也可以)
o {yourkeytabpath}:自己用户的keytab文件路径,keytab下载方式参考"下载keytab文件"
**2.**自测代码示例如下
a. hiveServer2 方式

· 执行结果如下

**b.**zookeeper 连接方式
注意:
o zookeeper连接方式必须以内网进行连接,购买华为云ECS Windows 服务器或打jar包形式
o 上传krb5.conf &user.keytab文件到 ECS服务器上,代码中地址进行修改

· 执行结果如下

DBeaver 方式
一、测试环境信息
**1.**MRS 3.1.5 安全集群(开启kerberos)
2. windows 11 64位,需要和MRS集群网络互通
**3.**DBeaver 21.3.0版本 64bit
**4.**MIT 4.1 版本 64bit
二、准备工作
**1.**MIT 安装
a. 在官网下载对应的MIT版本,kerberos MIT官网地址

**b.**下载完成后打开,点击"Next"

**c.**选择同意协议并点击"Next"

**d.**选择自定义安装

e. 点击 Browse-> look in -> ok-> Next

**f.**取消开机自启->Next

g. 点击"Install",开始安装Kerberos

**h.**等待安装结束后点击"Finish"

**i.**选择Yes,重启完成后进行下一步

**2.**配置环境变量
**a.**将修改完成的krb5.conf 文件重命名为krb5.ini,并放置某一路径下(例:D:\softwarePackage\kerberos)
**b.**配置环境变量

**c.**进入到安装MIT的bin目录下,进行认证测试

3. DBeaver安装
**a.**官网下载对应的DBeaver版本,DBeaver官网


b. 打开下载的exe文件->选择语言模式->ok->下一步



**c.**选择我接受

**d.**选择多用户使用->下一步

**e.**选择语言->ok

**f.**点击下一步->我接受


**g.**选择安装的组件,DBeaver 21.3 版本java版本需要≥11,如果本机java环境大于11的话取消勾选"Include Java","DBeaver Community"是必选项,然后点击下一步

**h.**选择部署的目标文件夹,然后点击下一步

i. 选择安装DBeaver 菜单栏名称(默认即可)->安装

**j.**等待安装完成,勾选"Create Desktop Shortcut"(桌面快捷方式)->点击完成

**k.**安装完成后,进入DBeaver安装路径,在dbeaver.ini追加如下内容,然后保存退出,配置完成后需要重启DBeaver


注意:java.security.krb5.conf路径替换为自己的主机所在的地址
三、DBeaver 创建连接
**1.**打开DBeaver->创建新连接->选择Hive->点击下一步


**2.**编辑驱动设置

**3.**配置URL模板
**a.**URL 模板如下

o {yousystemuser} 替换自己MRS集群的principal,查找方式参考"查看系统生成principal"
o {port}:替换为自己Hive端口
b. 将URL模板填充至标红部分

**4.**选择需要引入的jar,下载步骤参考"下载hive客户端配置"



**5.**点击找到类->确定

**6.**填充外网地址&数据库名称,然后测试链接

