保姆级连接FusionInsight MRS kerberos Hive

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

相关推荐
南宫生4 分钟前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
转码的小石12 分钟前
12/21java基础
java
李小白6620 分钟前
Spring MVC(上)
java·spring·mvc
GoodStudyAndDayDayUp33 分钟前
IDEA能够从mapper跳转到xml的插件
xml·java·intellij-idea
装不满的克莱因瓶1 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
n北斗1 小时前
常用类晨考day15
java
骇客野人1 小时前
【JAVA】JAVA接口公共返回体ResponseData封装
java·开发语言
清平乐的技术专栏1 小时前
Hive SQL 查询所有函数
hive·hadoop·sql
yuanbenshidiaos2 小时前
c++---------数据类型
java·jvm·c++
向宇it2 小时前
【从零开始入门unity游戏开发之——C#篇25】C#面向对象动态多态——virtual、override 和 base 关键字、抽象类和抽象方法
java·开发语言·unity·c#·游戏引擎