
# MRS Hive对接外部LDAP配置说明
#### 应用场景
本章节介绍Hive如何对接外部LDAP并访问HiveServer。
为了管理集群中数据与资源的访问控制权限，在安全模式下，客户端应用程序在访问集群中的任意资源之前均需要通过身份认证，建立安全会话链接。
MRS通过KrbServer为所有组件提供Kerberos认证功能，实现了可靠的认证机制。
LdapServer支持轻量目录访问协议（Lightweight Directory Access Protocol，简称为LDAP），为Kerberos认证提供用户和用户组数据保存能力。
#### 方案架构
Hive是建立在Hadoop上的数据仓库框架，提供大数据平台批处理计算能力，能够对结构化/半结构化数据进行批量分析汇总完成数据计算。提供类似SQL的Hive Query Language语言操作结构化数据，其基本原理是将HQL语言自动转换成MapReduce任务，从而完成对Hadoop集群中存储的海量数据进行查询和分析。
Hive主要特点如下：
- 海量结构化数据分析汇总。
- 将复杂的MapReduce编写任务简化为SQL语句。
- 灵活的数据存储格式，支持JSON、CSV、TEXTFILE、RCFILE、SEQUENCEFILE、ORC等存储格式。
Hive作为一个基于HDFS和MapReduce架构的数据仓库，其主要能力是通过对HQL（Hive Query Language）编译和解析，生成并执行相应的MapReduce任务或者HDFS操作。
图1Hive结构   
![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002091545870.png "点击放大")
 #### 约束与限制
- 需要在Manager的"系统 \> 权限 \> 用户"界面上创建一个LDAP中已存在的同名用户，并添加"hive"和"hadoop"用户组，该用户用于HiveServer的健康检查。
- 本章节配置说明适用于MRS 3.1.0及之后版本。
 
#### 步骤一：配置LDAP认证
1. 登录Manager界面，选择"集群 \> 服务 \> Hive \> 配置 \> 全部配置 \> HiveServer（角色） \> 安全"，配置以下参数：
   表1配置LDAP认证参数 
   | 参数名称                                           | 参数描述                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 参数取值示例                                                               |
   |:---|:---|:---|
   | hive.server2.authentication                    | 用于指定HiveServer的认证方式，取值范围为"KERBEROS"或"LDAP"，需设置为"LDAP"。                                                                                                                                                                                                                                                                                                                                                                                                    | LDAP                                                                 |
   | hive.server2.authentication.ldap.baseDN        | LDAP服务用户所在的Base DN。                                                                                                                                                                                                                                                                                                                                                                                                                                       | -                                                                    |
   | hive.server2.authentication.ldap.password      | [约束与限制]中创建的与LDAP中同名的用户密码，即HiveServer健康检查所使用的用户对应的密码。                                                                                                                                                                                                                                                                                                                                                                  | -                                                                    |
   | hive.server2.authentication.ldap.url.ip        | 仅适用于MRS 3.5.0之前版本，用于指定LDAP IP地址。                                                                                                                                                                                                                                                                                                                                                                                                                          | -                                                                    |
   | hive.server2.authentication.ldap.url.port      | 仅适用于MRS 3.5.0之前版本，用于指定LDAP端口，默认值为389。                                                                                                                                                                                                                                                                                                                                                                                                                     | 389                                                                  |
   | hive.server2.authentication.ldap.url           | 仅适用于MRS 3.5.0及之后版本，用于指定连接LDAP服务的URL，格式为：**ldap://** *${ldap_host}* :*${ldap_port}*。 说明： - *${ldap_host}* 为LDAP服务的主机名或IP地址，*${ldap_port}*为LDAP服务的的端口号。  - 必须确保配置的LDAP服务主机名或者IP与HiveServer节点互通。如果URL中配置的LDAP主机名，则需要在HiveServer节点的"/etc/hosts"文件中配置相应LDAP主机名和IP映射关系。   | **ldap://** *xxx:xxx*                                                |
   | hive.server2.authentication.ldap.userDNPattern | 在此目录中查找用户DN时使用的模式列表，如果该参数值有多个，使用":"分隔。                                                                                                                                                                                                                                                                                                                                                                                                                    | cn=%s,ou=People1,dc=huawei,dc=com: cn=%s,ou=People2,dc=huawei,dc=com |
   | hive.server2.authentication.ldap.username      | [约束与限制]中创建的与LDAP中同名的用户名，即HiveServer健康检查所使用的用户对应的用户名。                                                                                                                                                                                                                                                                                                                                                                  | -                                                                    |
      
   
2. 修改完成后，单击左上方"保存"，在弹出的对话框中单击"确定"保存配置。
3. 单击"实例"，勾选配置状态为"配置过期"的实例，选择"更多 \> 重启实例"重启受影响的Hive实例。 ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002063326122.png "点击放大")
   
 
#### 步骤二：访问HiveServer
开启LDAP认证后，访问HiveServer需要提供LDAP的用户名和密码。即可在Hive客户端节点执行以下命令连接HiveServer：
**beeline -u "jdbc:hive2://** *${hs_ip}* :*${hs_port}* **"** **-n** *${user}* **-p** *${password}*
相关参数说明如下：
- ${user}：访问HiveServer的LDAP的用户名。
- ${password}：访问HiveServer的LDAP用户密码。
- ${hs_ip}：MRS集群HiveServer实例部署节点的业务IP，可以在Manager界面，选择"集群 \> 服务 \> Hive \> 实例"中查看 。
- ${hs_port}：MRS集群HiveServer的端口号，可以在任一HiveServer实例所在节点执行以下命令获取： **grep -A 1 'hive.server2.thrift.port' ${BIGDATA_HOME}/FusionInsight_HD_\*/\*_HiveServer/etc/hive-site.xml \| grep 'value' \| awk -F'\[\<\>\]' '{print $3}'**
  
 
