准备连接Hive集群配置文件
准备集群认证用户信息
对于开启Kerberos认证的MRS集群,需提前准备具有相关组件操作权限的用户用于程序认证。
以下Hive权限配置示例供参考,在实际业务场景中可根据业务需求灵活调整。
- 登录FusionInsight Manager。
- 选择“集群 > 服务 > Hive > 更多 > 启用Ranger鉴权”,查看该参数是否置灰。
- 是,创建用户并在Ranger中赋予该用户相关操作权限:
- 选择“系统 > 权限 > 用户 > 添加用户”,在新增用户界面创建一个机机用户,例如developuser。
“用户组”需加入“hive”用户组。
- 使用Ranger管理员用户rangeradmin登录Ranger管理页面。
rangeradmin用户默认密码为“Rangeradmin@123”,详细内容请参见用户账号一览表。
- 在首页中单击“Settings”,选择“Roles”。
- 单击Role Name为admin的角色,在“Users”区域,单击“Select User”,选择2.a创建的用户名。
- 单击Add Users按钮,在对应用户名所在行勾选“Is Role Admin”,单击“Save”保存配置。
若在对数据库/表进行相关操作时指定了HDFS路径,需参考表2在Ranger中给用户添加HDFS路径的相关权限。
- 选择“系统 > 权限 > 用户 > 添加用户”,在新增用户界面创建一个机机用户,例如developuser。
- 否,创建用户并在Manager赋予用户相关操作权限:
- 是,创建用户并在Ranger中赋予该用户相关操作权限:
- 使用admin用户登录FusionInsight Manager,选择“user.keytab”文件与“krb5.conf”文件。 ,在用户名为developuser的操作列选择“更多 > 下载认证凭据”下载认证凭据文件,保存后解压得到该用户的
准备运行环境配置文件
应用程序开发或运行过程中,需通过集群相关配置文件信息连接MRS集群,配置文件通常包括集群组件信息文件以及用于安全认证的用户文件,可从已创建好的MRS集群中获取相关内容。
用于程序调测或运行的节点,需要与MRS集群内节点网络互通,同时配置hosts域名信息。
- 场景一:准备本地Windows开发环境调测程序所需配置文件。
- 登录FusionInsight Manager,选择“集群 > 概览 > 更多 > 下载客户端”,“选择客户端类型”设置为“仅配置文件”,根据待安装客户端节点的节点类型选择正确的平台类型后(x86选择x86_64,ARM选择aarch64)单击“确定”,等待客户端文件包生成后根据浏览器提示下载客户端到本地并解压。
例如,客户端文件压缩包为“FusionInsight_Cluster_1_Services_Client.tar”,解压后得到“FusionInsight_Cluster_1_Services_ClientConfig_ConfigFiles.tar”,继续解压该文件。
- 进入客户端解压路径“Hive\config”,获取表1中相关配置文件。
- 复制解压目录下的“hosts”文件中的内容到本地hosts文件中。
- 在应用开发过程中,如需在本地Windows系统中调测应用程序,需要确保本地节点能与“hosts”文件中所列出的各主机在网络上互通。
- 如果当前节点与MRS集群所在网络平面不互通,可以通过绑定EIP的方式访问MRS集群,具体操作请参考配置Windows通过EIP访问安全模式集群Hive。
- Windows本地hosts文件存放路径举例:“C:\WINDOWS\system32\drivers\etc\hosts”。
- 登录FusionInsight Manager,选择“集群 > 概览 > 更多 > 下载客户端”,“选择客户端类型”设置为“仅配置文件”,根据待安装客户端节点的节点类型选择正确的平台类型后(x86选择x86_64,ARM选择aarch64)单击“确定”,等待客户端文件包生成后根据浏览器提示下载客户端到本地并解压。
- 场景二:准备Linux环境运行程序所需配置文件。
- 在节点中安装客户端。
客户端机器的时间与集群的时间要保持一致,时间差小于5分钟。
- 获取配置文件:
- 登录FusionInsight Manager,选择“集群 > 概览 > 更多 > 下载客户端”,“选择客户端类型”设置为“仅配置文件”,根据待安装客户端节点的节点类型选择正确的平台类型后(x86选择x86_64,ARM选择aarch64),勾选“仅保存到如下路径”,单击“确定”,下载客户端配置文件至集群主OMS点。
- 以root用户登录主OMS节点,进入客户端配置文件所在路径(默认为“/tmp/FusionInsight-Client/”),解压软件包后获取“Hive/config”路径下的表1中相关配置文件。
例如客户端软件包为“FusionInsight_Cluster_1_Services_Client.tar”,下载路径为主管理节点的“/tmp/FusionInsight-Client”:
cd /tmp/FusionInsight-Client
tar -xvf FusionInsight_Cluster_1_Services_Client.tar
tar -xvf FusionInsight_Cluster_1_Services_ClientConfig_ConfigFiles.tar
cd FusionInsight_Cluster_1_Services_ClientConfig_ConfigFiles/Hive/config
- 检查客户端节点网络连接。
在安装客户端过程中,系统会自动配置客户端节点“hosts”文件,建议检查“/etc/hosts”文件内是否包含集群内节点的主机名信息,如未包含,需要手动复制解压目录下的“hosts”文件中的内容到客户端所在节点的hosts文件中,确保本地机器能与集群各主机在网络上互通。
- 在节点中安装客户端。
Hive操作权限
在进行应用程序开发之前,使用的用户的基本权限要求是属于Hive组,额外操作权限需从系统管理员处获取,具体权限要求请参见表2。用户运行样例程序,需要在default数据库中有CREATE权限。
操作类型/作用对象 |
操作 |
权限要求 |
---|---|---|
DATABASE |
CREATE DATABASE dbname [LOCATION "hdfs_path"] |
如果指定了HDFS路径hdfs_path,需要是路径hdfs_path的所有者和具有RWX权限。 |
DROP DATABASE dbname |
拥有数据库dbname的所有权。 |
|
ALTER DATABASE dbnameSET OWNERuser_or_role |
具有admin权限。 |
|
TABLE |
CREATE TABLE table_a |
拥有数据库的CREATE权限。 |
CREATE TABLE table_aAS SELECTtable_b |
拥有数据库的CREATE权限,对表table_b拥有SELECT权限。 |
|
CREATE TABLE table_a LIKEtable_b |
拥有数据库的CREATE权限。 |
|
CREATE [EXTERNAL] TABLE table_a LOCATION "hdfs_path" |
拥有数据库的CREATE权限,是HDFS上的数据路径hdfs_path的所有者和具有RWX权限。 |
|
DROP TABLE table_a |
是表table_a的所有者。 |
|
ALTER TABLE table_a SET LOCATION "hdfs_path" |
是表table_a的所有者,是HDFS上的数据路径hdfs_path的所有者和具有RWX权限。 |
|
ALTER TABLE table_aSETFILEFORMAT |
是表table_a的所有者。 |
|
TRUNCATE TABLE table_a |
是表table_a的所有者。 |
|
ANALYZE TABLE table_a COMPUTE STATISTICS |
对表table_a拥有SELECT和INSERT权限。 |
|
SHOW TBLPROPERTIES table_a |
对表table_a拥有SELECT权限。 |
|
SHOW CREATE TABLE table_a |
对表table_a拥有SELECT且带有WITH GRANT OPTION的权限。 |
|
Alter |
ALTER TABLE table_a ADD COLUMN |
是表table_a的所有者。 |
ALTER TABLE table_a REPLACE COLUMN |
是表table_a的所有者。 |
|
ALTER TABLE table_a RENAME |
是表table_a的所有者。 |
|
ALTER TABLE table_a SET SERDE |
是表table_a的所有者。 |
|
ALTER TABLE table_a CLUSTER BY |
是表table_a的所有者。 |
|
PARTITION |
ALTER TABLE table_a ADD PARTITIONpartition_spec LOCATION "hdfs_path" |
对表table_a拥有INSERT权限,是HDFS上的数据路径hdfs_path的所有者和具有RWX权限。 |
ALTER TABLE table_a DROP PARTITIONpartition_spec |
对表table_a拥有DELETE权限。 |
|
ALTER TABLE table_a PARTITIONpartition_spec SET LOCATION "hdfs_path" |
是表table_a的所有者,是HDFS上的数据路径hdfs_path的所有者和具有RWX权限。 |
|
ALTER TABLE table_aPARTITIONpartition_spec SET FILEFORMAT |
是表table_a的所有者。 |
|
LOAD |
LOAD INPATH 'hdfs_path' INTO TABLE table_a |
对表table_a拥有INSERT权限,是HDFS上的数据路径hdfs_path的所有者和具有RWX权限。 |
INSERT |
INSERT TABLE table_a SELECT FROMtable_b |
对表table_a拥有INSERT权限,对表table_b拥有SELECT权限。拥有Yarn的default队列的Submit权限。 |
SELECT |
SELECT * FROM table_a |
对表table_a拥有SELECT权限。 |
SELECT FROM table_aJOINtable_b |
对表table_a、表table_b拥有SELECT权限,拥有Yarn的default队列的Submit权限。 |
|
SELECT FROM (SELECT FROM table_aUNION ALL SELECT FROMtable_b) |
对表table_a、表table_b拥有SELECT权限。拥有Yarn的default队列的Submit权限。 |
|
EXPLAIN |
EXPLAIN [EXTENDED|DEPENDENCY] query |
对相关表目录具有RX权限。 |
VIEW |
CREATE VIEW view_name AS SELECT ... |
对相关表拥有SELECT且带有WITH GRANT OPTION的权限。 |
ALTER VIEW view_name RENAME TOnew_view_name |
是视图view_name的所有者。 |
|
DROP VIEW view_name |
是视图view_name的所有者。 |
|
FUNCTION |
CREATE [TEMPORARY] FUNCTION function_name AS 'class_name' |
具有admin权限。 |
DROP [TEMPORARY] function_name |
具有admin权限。 |
|
MACRO |
CREATE TEMPORARY MACRO macro_name ... |
具有admin权限。 |
DROP TEMPORARY MACRO macro_name |
具有admin权限。 |
- 以上所有的操作只要拥有Hive的admin权限以及对应的HDFS目录权限就能做相应的操作。
- 如果当前组件使用了Ranger进行权限控制,需基于Ranger配置相关策略进行权限管理。