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

配置Hive业务使用其他组件的权限

操作场景

Hive业务还可能需要关联使用其他组件,例如HQL语句触发MapReduce任务需要设置Yarn权限,或者Hive over HBase的场景需要HBase权限。以下介绍Hive关联Yarn和Hive over HBase两个场景下的操作。

  • 安全模式下Yarn和HBase的权限管理默认是开启的,因此在安全模式下默认需要配置Yarn和HBase权限。
  • 在普通模式下,Yarn和HBase的权限管理默认是关闭的,即任何用户都有权限,因此普通模式下默认不需要配置Yarn和HBase权限。如果用户修改了YARN或者HBase的配置来开启权限管理,则修改后也需要配置Yarn和HBase权限。
  • MRS 3.x及后续版本支持Ranger,如果当前组件使用了Ranger进行权限控制,须基于Ranger配置相关策略进行权限管理,具体操作可参考添加Hive的Ranger访问权限策略

前提条件

  • 完成Hive客户端的安装。例如安装目录为“/opt/client”。
  • 获取一个拥有管理员权限的用户,例如“admin”。

操作步骤

MRS 3.x之前版本,Hive关联Yarn

用户如果执行insert,countdistinctgroup byorder bysort byjoin等语句时,将触发MapReduce任务,需要设置Yarn权限。以授予角色在表“thc”执行count语句的权限为例,操作步骤如下:

  1. 在MRS Manager角色界面创建一个角色。
  2. 在“权限”的表格中选择“Yarn > Scheduler Queue > root”。
  3. 在“default”队列的“权限”列,勾选“Submit”,单击“确定”保存。
  4. 在“权限”的表格中选择“Hive > Hive Read Write Privileges > default”,勾选表“thc”的“Select”,单击“确定”保存。

MRS 3.x及后续版本,Hive关联Yarn

用户如果执行insert,countdistinctgroup byorder bysort byjoin等语句时,将触发MapReduce任务,需要设置Yarn权限。以授予角色在表“thc”执行count语句的权限为例,操作步骤如下:

  1. 在FusionInsight Manager角色界面创建一个角色。
  2. 在“配置资源权限”的表格中选择“待操作集群的名称 > Yarn > 调度队列 > root”。
  3. 在“default”队列的“权限”列,勾选“提交”,单击“确定”保存。
  4. 在“配置资源权限”的表格中选择“待操作集群的名称 > Hive > Hive读写权限 > default”,勾选表“thc”的“查询”,单击“确定”保存。

MRS 3.x之前版本,Hive over HBase授权

用户如果需要使用类似SQL语句的方式来操作HBase表,授予权限后可以在Hive中使用HQL命令访问HBase表。以授予用户在Hive中查询HBase表的权限为例,操作步骤如下

  1. 在MRS Manager角色管理界面创建一个HBase角色,例如“hive_hbase_create”,并授予创建HBase表的权限。

    在“权限”的表格中选择“HBase > HBase Scope > global”,勾选命名空间“default”的“Create”,单击“确定”保存。

  2. 在MRS Manager用户管理界面创建一个“人机”用户,例如“hbase_creates_user”,加入“hive”组,绑定角色“hive_hbase_create”,用于创建Hive表和HBase表。
  3. 请根据客户端所在位置,登录安装客户端的节点。
  4. 执行以下命令,配置环境变量。

    source /opt/client/bigdata_env

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

    kinit hbase_creates_user

  6. 执行以下命令,进入Hive客户端shell环境:

    beeline

  7. 执行以下命令,同时在Hive和HBase中创建表。例如创建表“thh”。

    CREATE TABLE thh(id int, name string, country string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES("hbase.columns.mapping" = "cf1:id,cf1:name,:key") TBLPROPERTIES ("hbase.table.name" = "thh");

    创建好的Hive表和HBase表分别保存在Hive的数据库“default”和HBase的命名空间“default”。

  8. 在MRS Manager角色管理界面创建一个角色,例如“hive_hbase_select”,并授予查询Hive表“thh”和HBase表“thh”的权限。

    1. 在“权限”的表格中选择“HBase > HBase Scope > global > default”,勾选表“thh”的“read”,单击“确定”保存,授予HBase角色查询表的权限。
    2. 编辑角色,在“权限”的表格中选择“HBase > HBase Scope > global > hbase”,勾选表“hbase:meta”的“Execute”,单击“确定”保存。
    3. 编辑角色,在“权限”的表格中选择“Hive > Hive Read Write Privileges > default”,勾选表“thh”的“Select”,单击“确定”保存。

  9. 在MRS Manager用户管理界面创建一个“人机”用户,例如“hbase_select_user”,加入“hive”组,绑定角色“hive_hbase_select”,用于查询Hive表和HBase表。
  10. 执行以下命令,配置环境变量。

    source /opt/client/bigdata_env

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

    kinit hbase_select_user

  12. 执行以下命令,进入Hive客户端shell环境。

    beeline

  13. 执行以下命令,使用Hive的HQL语句查询HBase表的数据。

    select * from thh;

MRS 3.x及后续版本,Hive over HBase授权

用户如果需要使用类似SQL语句的方式来操作HBase表,授予权限后可以在Hive中使用HQL命令访问HBase表。以授予用户在Hive中查询HBase表的权限为例,操作步骤如下

  1. 在FusionInsight Manager角色管理界面创建一个HBase角色,例如“hive_hbase_create”,并授予创建HBase表的权限。

    在“配置资源权限”的表格中选择“待操作集群的名称 > HBase > HBase Scope > global”,勾选命名空间“default”的“创建”,单击“确定”保存。

  2. 在FusionInsight Manager用户管理界面创建一个“人机”用户,例如“hbase_creates_user”,加入“hive”组,绑定角色“hive_hbase_create”,用于创建Hive表和HBase表。
  3. 如果当前组件使用了Ranger进行权限控制,需给“hive_hbase_create”或“hbase_creates_user”配置“Create”权限,具体操作可参考添加Hive的Ranger访问权限策略
  4. 以客户端安装用户,登录安装客户端的节点。
  5. 执行以下命令,配置环境变量。

    source /opt/client/bigdata_env

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

    kinit hbase_creates_user

  7. 执行以下命令,进入Hive客户端shell环境:

    beeline

  8. 执行以下命令,同时在Hive和HBase中创建表。例如创建表“thh”。

    CREATE TABLE thh(id int, name string, country string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES("hbase.columns.mapping" = "cf1:id,cf1:name,:key") TBLPROPERTIES ("hbase.table.name" = "thh");

    创建好的Hive表和HBase表分别保存在Hive的数据库“default”和HBase的命名空间“default”。

  9. 在FusionInsight Manager角色管理界面创建一个角色,例如“hive_hbase_select”,并授予查询Hive表“thh”和HBase表“thh”的权限。

    1. 在“配置资源权限”的表格中选择“待操作集群的名称 > HBase > HBase Scope > global > default”,勾选表“thh”的“读”,单击“确定”保存,授予HBase角色查询表的权限。
    2. 编辑角色,在“配置资源权限”的表格中选择“待操作集群的名称 > HBase > HBase Scope > global > hbase”,勾选表“hbase:meta”的“执行”,单击“确定”保存。
    3. 编辑角色,在“配置资源权限”的表格中选择“待操作集群的名称 > Hive > Hive读写权限 > default”,勾选表“thh”的“查询”,单击“确定”保存。

  10. 在FusionInsight Manager用户管理界面创建一个“人机”用户,例如“hbase_select_user”,加入“hive”组,绑定角色“hive_hbase_select”,用于查询Hive表和HBase表。
  11. 执行以下命令,配置环境变量。

    source /opt/client/bigdata_env

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

    kinit hbase_select_user

  13. 执行以下命令,进入Hive客户端shell环境。

    beeline

  14. 执行以下命令,使用Hive的HQL语句查询HBase表的数据。

    select * from thh;