
# 创建Hive角色
#### 操作场景
该任务指导MRS集群管理员在Manager创建并设置Hive的角色。Hive角色可设置Hive管理员权限以及Hive数据表的数据操作权限。
用户使用Hive并创建数据库需要加入hive组，不需要角色授权。用户在Hive和HDFS中对自己创建的数据库或表拥有完整权限，可直接创建表、查询数据、删除数据、插入数据、更新数据以及授权他人访问表与对应HDFS目录与文件。默认创建的数据库或表保存在HDFS目录"/user/hive/warehouse"。
![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
- 安全模式支持创建Hive角色，普通模式不支持创建Hive角色。
- MRS 3.x及后续版本支持Ranger，如果当前组件使用了Ranger进行权限控制，须基于Ranger配置相关策略进行权限管理，具体操作可参考[添加Hive的Ranger访问权限策略](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_1858.html)。
 
#### 前提条件
- MRS集群管理员已明确业务需求。
- 已登录Manager。
- 已安装好Hive客户端。
 
#### 操作步骤
MRS 3.x之前版本，创建Hive角色的操作如下：
1. 登录MRS Manager。
2. 选择"系统设置 \> 权限配置 \> 角色管理"。
3. 单击"添加角色"，输入"角色名称"和"描述"。
4. 设置角色"权限"请参见[表1]。
   
   ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001210169035.png)
   - "Hive Admin Privilege"：Hive管理员权限。如需使用该权限，在执行SQL语句时需要先执行**set role admin**来设置权限。
   
   - "Hive Read Write Privileges"：Hive数据表管理权限，可设置与管理已创建的表的数据操作权限。根据需要勾选相应database的权限，如果要精确到表，可以单击database名称，勾选相应表的权限。
   
   
   ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
   - Hive角色管理支持授予Hive管理员权限、访问表和视图的权限，不支持数据库的授权。
   
   - Hive管理员权限不支持管理HDFS的权限。
   
   - 如果数据库中的表或者表中的文件数量比较多，在授权时可能需要等待一段时间。例如表的文件数量为1万时，可能需要等待2分钟。
    
    表1设置角色 
   | 任务场景                    | 角色授权操作                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   |:---|:---|
   | 设置Hive管理员权限             | 在"权限"的表格中单击"Hive"，勾选"Hive Admin Privilege"。 说明： 用户绑定Hive管理员角色后，在每个维护操作会话中，还需要执行以下操作： 1. 请根据客户端所在位置，参考[安装客户端](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0091.html)章节，登录安装客户端的节点。  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，count** ，**distinct** ，**group by** ，**order by** ，**sort by** 或**join**等语句的相关场景。 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及之后版本）](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_2124.html)。
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数据表管理权限，可设置与管理已创建的表的数据操作权限。
   
   
   ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
   - MRS 3.1.0版本，Hive角色管理支持授予Hive管理员权限、访问表和视图的权限，不支持数据库的授权。
   
   - MRS 3.1.2及之后版本，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，count** ，**distinct** ，**group by** ，**order by** ，**sort by** 或**join**等语句的相关场景。 1. 在"配置资源权限"的表格中选择"*待操作集群的名称* \> Yarn \> 调度队列 \> root"。  2. 在"default"队列的"权限"列，勾选"提交"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
      
   
   
5. 单击"确定"，返回"角色"。
6. 选择"权限 \> 用户"，单击"添加用户"。
7. 输入用户名，选择"用户类型"选择"人机"类型，设置用户密码，在用户组添加Hive相应权限的用户组并选择主组，绑定新创建的角色，单击"确定"完成Hive用户创建。
8. 待用户生成后，即可使用该用户执行相应SQL语句。
 
