数新网络,让每个人享受数据的价值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. 填充外网地址&数据库名称,然后测试链接