更新时间:2024-08-05 GMT+08:00

准备连接Hive集群配置文件

准备集群认证用户信息

对于开启Kerberos认证的MRS集群,需提前准备具有相关组件操作权限的用户用于程序认证。

以下Hive权限配置示例供参考,在实际业务场景中可根据业务需求灵活调整。

  1. 登录FusionInsight Manager。
  2. 选择“集群 > 服务 > Hive > 更多 > 启用Ranger鉴权”,查看该参数是否置灰。

    • 是,创建用户并在Ranger中赋予该用户相关操作权限:
      1. 选择“系统 > 权限 > 用户 > 添加用户”,在新增用户界面创建一个机机用户,例如developuser

        “用户组”需加入“hive”用户组。

      2. 使用Ranger管理员用户rangeradmin登录Ranger管理页面。

        rangeradmin用户默认密码为“Rangeradmin@123”,详细内容请参见用户账号一览表

      3. 在首页中单击“Settings”,选择“Roles”。
      4. 单击Role Name为admin的角色,在“Users”区域,单击“Select User”,选择2.a创建的用户名。
      5. 单击Add Users按钮,在对应用户名所在行勾选“Is Role Admin”,单击“Save”保存配置。

        若在对数据库/表进行相关操作时指定了HDFS路径,需参考表2在Ranger中给用户添加HDFS路径的相关权限。

    • 否,创建用户并在Manager赋予用户相关操作权限:
      1. 选择系统 > 权限 > 角色 > 添加角色
        1. 填写角色的名称,例如developrole
        2. 在“配置资源权限”的表格中选择“待操作集群的名称 > Yarn > 调度队列 > root”,勾选“default”的“提交”和“管理”,单击“确定”保存。

          若在对数据库/表进行相关操作时指定了HDFS路径,需参考表2在Manager中给用户添加HDFS路径的相关权限。

      2. 选择“用户 > 添加用户”,在新增用户界面,创建一个机机用户,例如developuser。
        • “用户组”需加入“hive”用户组。
        • “角色”加入2.a新增的角色。

  3. 使用admin用户登录FusionInsight Manager,选择系统 > 权限 > 用户,在用户名为developuser的操作列选择“更多 > 下载认证凭据”下载认证凭据文件,保存后解压得到该用户的“user.keytab”文件与“krb5.conf”文件。

准备运行环境配置文件

应用程序开发或运行过程中,需通过集群相关配置文件信息连接MRS集群,配置文件通常包括集群组件信息文件以及用于安全认证的用户文件,可从已创建好的MRS集群中获取相关内容。

用于程序调测或运行的节点,需要与MRS集群内节点网络互通,同时配置hosts域名信息。

  • 场景一:准备本地Windows开发环境调测程序所需配置文件。
    1. 登录FusionInsight Manager,选择“集群 > 概览 > 更多 > 下载客户端”,“选择客户端类型”设置为“仅配置文件”,根据待安装客户端节点的节点类型选择正确的平台类型后(x86选择x86_64,ARM选择aarch64)单击“确定”,等待客户端文件包生成后根据浏览器提示下载客户端到本地并解压。

      例如,客户端文件压缩包为“FusionInsight_Cluster_1_Services_Client.tar”,解压后得到“FusionInsight_Cluster_1_Services_ClientConfig_ConfigFiles.tar”,继续解压该文件。

    2. 进入客户端解压路径“Hive\config”,获取表1中相关配置文件。
      表1 配置文件

      文件名称

      作用

      hiveclient.properties

      Hive客户端连接相关配置参数。

      core-site.xml

      Hadoop客户端相关配置参数。

    3. 复制解压目录下的“hosts”文件中的内容到本地hosts文件中。
      • 在应用开发过程中,如需在本地Windows系统中调测应用程序,需要确保本地节点能与“hosts”文件中所列出的各主机在网络上互通。
      • 如果当前节点与MRS集群所在网络平面不互通,可以通过绑定EIP的方式访问MRS集群,具体操作请参考配置Windows通过EIP访问安全模式集群Hive
      • Windows本地hosts文件存放路径举例:“C:\WINDOWS\system32\drivers\etc\hosts”。
  • 场景二:准备Linux环境运行程序所需配置文件。
    1. 在节点中安装客户端。

      例如客户端安装目录为“/opt/client”。

      客户端机器的时间与集群的时间要保持一致,时间差小于5分钟。

    2. 获取配置文件:
      1. 登录FusionInsight Manager,选择“集群 > 概览 > 更多 > 下载客户端”,“选择客户端类型”设置为“仅配置文件”,根据待安装客户端节点的节点类型选择正确的平台类型后(x86选择x86_64,ARM选择aarch64),勾选“仅保存到如下路径”,单击“确定”,下载客户端配置文件至集群主OMS点。
      2. 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

    3. 检查客户端节点网络连接。

      在安装客户端过程中,系统会自动配置客户端节点“hosts”文件,建议检查“/etc/hosts”文件内是否包含集群内节点的主机名信息,如未包含,需要手动复制解压目录下的“hosts”文件中的内容到客户端所在节点的hosts文件中,确保本地机器能与集群各主机在网络上互通。

Hive操作权限

在进行应用程序开发之前,使用的用户的基本权限要求是属于Hive组,额外操作权限需从系统管理员处获取,具体权限要求请参见表2。用户运行样例程序,需要在default数据库中有CREATE权限。

表2 操作权限要求

操作类型/作用对象

操作

权限要求

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配置相关策略进行权限管理。