使用catalog连接kerberos安全认证hive on hdfs
- 通过访问以下地址登录表格存储服务管理控制台:https://console.huaweicloud.com/cloudtable。
- 用户在CloudTable集群管理界面,选择需要操作的集群进入集群详情页面。
- 单击tab页中的“连接设置”,弹出连接页面。
- 单击左上角“新建连接”创建MRS Hive连接。
- 新建连接类型:安全认证hive on hdfs,认证类型选择KERBEROS,OBS按钮关闭状态。
图1 新建连接
表1 参数说明 参数
描述
名称
根据连接的数据源类型,用户可以自定义连接名。
说明:必须以字母开头,由字母、数字、中划线组成,不能包含其他的特殊字符,并且长度为4~64个字符。
连接器
Doris支持的外部数据目录组件,目前支持可选:Hive。
Hadoop类型
Doris支持hadoop组件,目前支持的可选:MRS。
集群名称
MRS集群名称。
说明:Doris只能对接一个kerberos集群中的一个用户。
Manager IP
MRS Manager的浮动IP地址,选择连接的集群后,ip地址会自动填充。
认证类型
MRS集群鉴权类型,安全集群可选“KERBEROS”,非安全集群可选“SIMPLE”。选择连接的集群后,安全类型会自动填充。
连接器版本
MRS集群的数据源组件的版本,HIVE支持3版本,可选:3.X。
用户名
MRS集群的用户名。
密码
MRS集群mrs_user_name对应的密码。
OBS支持
打开按钮,则支持OBS。关闭按钮则不支持OBS。
- 配置好参数后,单击测试。如果测试失败请检查用户名和密码是否正确。
- 测试完成后,单击确定按钮,连接设置页面会出现一条新的连接记录。
SQL命令
- 创建CATALOG的SQL命令以及参数说明。
CREATE CATALOG hive_catalog PROPERTIES ( 'type'='hms', 'hive.metastore.uris' = 'thrift://192.x.x.x:port,thrift://192.x.x.x:port', 'hive.metastore.sasl.enabled' = 'true', 'hive.server2.thrift.sasl.qop'='auth-conf', 'hive.server2.authentication' = 'KERBEROS', 'hive.server2.authentication.kerberos.principal' = 'hive/hadoop.99261318_1115_4b1a_bcbd_f944f2d68731.com@99261318_1115_4B1A_BCBD_F944F2D68731.COM', 'hive.metastore.kerberos.principal' = 'hive/hadoop.99261318_1115_4b1a_bcbd_f944f2d68731.com@99261318_1115_4B1A_BCBD_F944F2D68731.COM', 'dfs.nameservices'='hacluster', 'dfs.ha.namenodes.hacluster'='3,4', 'dfs.namenode.rpc-address.hacluster.3'='192.x.x.x:port', 'dfs.namenode.rpc-address.hacluster.4'='192.x.x.x:port', 'dfs.client.failover.proxy.provider.hacluster'='org.apache.hadoop.hdfs.server.namenode.ha.AdaptiveFailoverProxyProvider', 'hadoop.security.authentication'='kerberos', 'hadoop.kerberos.principal' = '{kinit_result}', -- kinit {USER_NAME} 的结果 'hive.version' = '3.1.0', 'fs.defaultFS'='hdfs://hacluster', 'hadoop.rpc.protection'='privacy', 'yarn.resourcemanager.address' = '192.X.X.X:port', 'yarn.resourcemanager.principal' = 'mapred/hadoop.hadoop.com@HADOOP.COM' );
表2 参数说明 参数
说明
type
对接外部数据类型。
hive.metastore.uris
hive元数据uri,可在hive-site.xml配置文件查看。
hive.server2.thrift.sasl.qop
可在hive-site.xml配置文件查看。
hive.server2.authentication
认证类型,在集群连接页面查看。
hive.server2.authentication.kerberos.principal
可在hive-site.xml配置文件查看。
hive.metastore.kerberos.principal
可在hive-site.xml配置文件查看。
dfs.nameservices
可在hdfs-site.xml配置文件查看。
dfs.ha.namenodes.hacluster
可在hdfs-site.xml配置文件查看。
dfs.namenode.rpc-address.hacluster.3
可在hdfs-site.xml配置文件查看。
说明:此参数的ip地址可在MRS集群的FusionInsight Manager页面<主页<组件<实例页面查看。
dfs.namenode.rpc-address.hacluster.4
可在hdfs-site.xml配置文件查看。
说明:此参数的ip地址可在MRS集群的FusionInsight Manager页面<主页<组件<实例页面查看。
dfs.client.failover.proxy.provider.hacluster
可在hdfs-site.xml配置文件查看。
hadoop.security.authentication
可在core-site.xml配置文件查看。
hadoop.kerberos.principal
\
hive.version
Hive版本。
fs.defaultFS
可在core-site.xml配置文件查看。
hadoop.rpc.protection
可在core-site.xml配置文件查看。
yarn.resourcemanager.address
- 可在yarn-site.xml配置文件查看。
- 获取参数步骤:
- 登录MRS集群的Manager页面。
- 主页>Yarn>实例>ResoureManager>概览>配置文件>yarn-site.xml。
- 查看地址,返回实例界面查看。
yarn.resourcemanager.principal
- 可在yarn-site.xml配置文件查看。
- 获取参数步骤:
- 登录MRS集群的Manager页面。
- 主页>Yarn>实例>ResoureManager>概览>配置文件>yarn-site.xml。
- 参数获取方法。
- 连接mrs集群,请参见使用mrs客户端章节。
- 进入client目录下,显示出MRS的全部组件,目前使的组件有HDFS和Hive组件。
cd /opt/Bigdata/client/
HDFS组件中包含了core-site.xml、hdfs-site.xml配置文件,Hive组件中包含了hive-site.xml配置。
- 进入组件中的配置文件查看参数。
- HDFS组件查看。
cd ./HDFS/hadoop/etc/
进入hadoop目录。
cd hadoop/hdfs-site.xml
打开hdfs-site.xml配置文件,查找相关参数。
vim hdfs-site.xml
- Hive组件查看。
/opt/Bigdata/client/Hive/config/hive-site.xml
打开hive-site.xml配置文件,查找相关参数。
vim hive-site.xml
- HDFS组件查看。
常见问题
当出现以下报错的时候,需要修改MRS集群的manager页面切换HDFS的主备。
mysql> select * from hive_hdfs_test2; ERROR 1105 (HY000): errCode = 2, detailMessage = get file split failed for table: hive_hdfs_test2, err: org.apache.hadoop.ipc.RemoteException: Operation category READ is not supported in state standby. Visit https://s.apache.org/sbnn-error at org.apache.hadoop.hdfs.server.namenode.ha.StandbyState.checkOperation(StandbyState.java:108) at org.apache.hadoop.hdfs.server.namenode.NameNode$NameNodeHAContext.checkOperation(NameNode.java:2200) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkOperation(FSNamesystem.java: