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

创建Hive角色

操作场景

该任务指导MRS集群管理员在Manager创建并设置Hive的角色。Hive角色可设置Hive管理员权限以及Hive数据表的数据操作权限。

用户使用Hive并创建数据库需要加入hive组,不需要角色授权。用户在Hive和HDFS中对自己创建的数据库或表拥有完整权限,可直接创建表、查询数据、删除数据、插入数据、更新数据以及授权他人访问表与对应HDFS目录与文件。默认创建的数据库或表保存在HDFS目录“/user/hive/warehouse”。

  • 安全模式支持创建Hive角色,普通模式不支持创建Hive角色。
  • MRS 3.x及后续版本支持Ranger,如果当前组件使用了Ranger进行权限控制,须基于Ranger配置相关策略进行权限管理,具体操作可参考添加Hive的Ranger访问权限策略

前提条件

  • MRS集群管理员已明确业务需求。
  • 已登录Manager。
  • 已安装好Hive客户端。

操作步骤

MRS 3.x之前版本,创建Hive角色的操作如下:

  1. 登录MRS Manager。
  2. 选择“系统设置 > 权限配置 > 角色管理”。
  3. 单击“添加角色”,输入“角色名称”和“描述”。
  4. 设置角色“权限”请参见表1

    • “Hive Admin Privilege”:Hive管理员权限。如需使用该权限,在执行SQL语句时需要先执行set role admin来设置权限。
    • “Hive Read Write Privileges”:Hive数据表管理权限,可设置与管理已创建的表的数据操作权限。根据需要勾选相应database的权限,如果要精确到表,可以单击database名称,勾选相应表的权限。
    • Hive角色管理支持授予Hive管理员权限、访问表和视图的权限,不支持数据库的授权。
    • Hive管理员权限不支持管理HDFS的权限。
    • 如果数据库中的表或者表中的文件数量比较多,在授权时可能需要等待一段时间。例如表的文件数量为1万时,可能需要等待2分钟。
    表1 设置角色

    任务场景

    角色授权操作

    设置Hive管理员权限

    在“权限”的表格中单击“Hive”,勾选“Hive Admin Privilege”。

    说明:

    用户绑定Hive管理员角色后,在每个维护操作会话中,还需要执行以下操作:

    1. 请根据客户端所在位置,登录安装客户端的节点。
    2. 执行以下命令配置环境变量。

      例如,Hive客户端安装目录为“/opt/hiveclient”,执行source /opt/hiveclient/bigdata_env

    3. 执行以下命令认证用户。

      kinit Hive业务用户

    4. 执行以下命令登录客户端工具。

      beeline

    5. 执行以下命令更新Hive用户的管理员权限。

      set role admin;

    设置在默认数据库中,查询其他用户表的权限

    1. 在“权限”的表格中选择“Hive > Hive Read Write Privileges”。
    2. 在指定表的“权限”列,勾选“Select”。

    设置在默认数据库中,插入其他用户表的权限

    1. 在“权限”的表格中选择“Hive > Hive Read Write Privileges”。
    2. 在指定表的“权限”列,勾选“Insert”。

    设置在默认数据库中,导入数据到其他用户表的权限

    1. 在“权限”的表格中选择“Hive > Hive Read Write Privileges”。
    2. 在指定表的“权限”列,勾选“Delete”和“Insert”。

    设置提交Hql命令到Yarn执行的权限

    部分业务需求使用的Hql命令将转化为MapReduce任务并提交到Yarn中执行,需要设置Yarn权限。例如运行的HQL使用了insert,countdistinctgroup byorder bysort byjoin等语句的相关场景。

    1. 在“权限”的表格中选择“Yarn > Scheduler Queue > root”。
    2. 在“default”队列的“权限”列,勾选“Submit”。

  5. 单击“确定”,返回“角色”。
  6. 选择“系统设置 > 用户管理 > 添加用户”。
  7. 输入用户名,在“用户类型”选择“人机”类型,设置用户密码,在用户组添加一个绑定了Hive管理员角色的用户组,并绑定新创建的Hive角色,单击“确定”完成Hive用户创建。
  8. 待用户生成后,即可使用该用户执行相应SQL语句。

MRS 3.x及后续版本,创建Hive角色的操作如下:

  1. 登录FusionInsight Manager,具体请参见访问FusionInsight Manager(MRS 3.x及之后版本)
  2. 选择“系统 > 权限 > 角色”。
  3. 单击“添加角色”,输入“角色名称”和“描述”。
  4. 设置角色“配置资源权限”请参见表2

    • 设置HDFS目录的读和执行权限。
      • 选择“待操作集群的名称 > HDFS > 文件系统 > hdfs://hacluster/ > user”,在“hive”的“权限”列,勾选“读”和“执行”。
      • 选择“待操作集群的名称 > HDFS > 文件系统 > hdfs://hacluster/ > user > hive”,在“warehouse”的“权限”列,勾选“读”和“执行”。
      • 选择“待操作集群的名称 > HDFS > 文件系统 > hdfs://hacluster/ > tmp”,在“hive-scratch”的“权限”列,勾选“读”和“执行”。
    • “Hive管理员权限”:Hive管理员权限。
    • “Hive读写权限”:Hive数据表管理权限,可设置与管理已创建的表的数据操作权限。
    • MRS 3.1.0版本,Hive角色管理支持授予Hive管理员权限、访问表和视图的权限,不支持数据库的授权。
    • Hive管理员权限不支持管理HDFS的权限。
    • 如果数据库中的表或者表中的文件数量比较多,在授权时可能需要等待一段时间。例如表的文件数量为1万时,可能需要等待2分钟。
    表2 设置角色

    任务场景

    角色授权操作

    设置Hive管理员权限

    在“配置资源权限”的表格中选择“待操作集群的名称 > Hive”,勾选“Hive管理员权限”。

    说明:

    用户绑定Hive管理员角色后,在每个维护操作会话中,还需要执行以下操作:

    1. 以客户端安装用户,登录安装Hive客户端的节点。
    2. 执行以下命令配置环境变量。

      例如,Hive客户端安装目录为“/opt/hiveclient”,执行source /opt/hiveclient/bigdata_env

    3. 执行以下命令认证用户。

      kinit Hive业务用户

    4. 执行以下命令登录客户端工具。

      beeline

    5. 执行以下命令更新Hive用户的管理员权限。

      set role admin;

    设置在默认数据库中,查询其他用户表的权限

    1. 在“配置资源权限”的表格中选择“待操作集群的名称 > Hive > Hive读写权限”。
    2. 在数据库列表中单击指定的数据库名称,显示数据库中的表。
    3. 在指定表的“权限”列,勾选“查询”。

    设置在默认数据库中,插入其他用户表的权限

    1. 在“配置资源权限”的表格中选择“待操作集群的名称 > Hive > Hive读写权限”。
    2. 在数据库列表中单击指定的数据库名称,显示数据库中的表。
    3. 在指定表的“权限”列,勾选“插入”。

    设置在默认数据库中,导入数据到其他用户表的权限

    1. 在“配置资源权限”的表格中选择“待操作集群的名称 > Hive > Hive读写权限”。
    2. 在数据库列表中单击指定的数据库名称,显示数据库中的表。
    3. 在指定表的“权限”列,勾选“删除”和“插入”。

    设置提交Hql命令到Yarn执行的权限

    部分业务需求使用的Hql命令将转化为MapReduce任务并提交到Yarn中执行,需要设置Yarn权限。例如运行的HQL使用了insert,countdistinctgroup byorder bysort byjoin等语句的相关场景。

    1. 在“配置资源权限”的表格中选择“待操作集群的名称 > Yarn > 调度队列 > root”。
    2. 在“default”队列的“权限”列,勾选“提交”。

  5. 单击“确定”,返回“角色”。
  6. 选择“权限 > 用户”,单击“添加用户”。
  7. 输入用户名,选择“用户类型”选择“人机”类型,设置用户密码,在用户组添加Hive相应权限的用户组并选择主组,绑定新创建的角色,单击“确定”完成Hive用户创建。
  8. 待用户生成后,即可使用该用户执行相应SQL语句。