
# 配置Spark JDBCServer使用用户名和密码认证连接
#### 使用场景
在集群已启用Kerberos认证（安全模式）的场景中，在Spark客户端通过Kerberos认证方式连接JDBCServer时，需要配置krb5.conf、keytab、hosts等文件，配置错误会导致认证失败，无法访问JDBCServer。
MRS 3.6.0-LTS及之后版本，Spark支持在Spark客户端使用用户名和密码方式进行认证连接Spark JDBCServer，这种认证方式客户端无需提供Kerberos相关配置，操作简便且兼容Kerberos认证方式。
Kerberos认证和Basic认证（用户名和密码认证）使用区别：
- Kerberos认证使用spark-beeline：
  ```
  cd 客户端安装目录
  source bigdata_env
  kinit username 或者 kinit -kt user.keytab username@域名
  spark-beeline
  ```
  
- Basic认证使用spark-beeline：
  ```
  cd 客户端安装目录
  source bigdata_env
  spark-beeline -n {username} -p
  按提示输入密码
  ```
  
 
#### 约束与限制
- 仅集群已启用Kerberos认证（安全模式）支持此功能。
- 用于进行认证的用户必须为在Manager界面的"系统 \> 权限 \> 用户"中创建的用户。
- Spark JDBCServer基于ZooKeeper实现负载均衡，客户端连接Spark JDBCServer前会先访问ZooKeeper，因此Spark JDBCServer开启用户名和密码认证功能时ZooKeeper也需要开启此功能。
- 修改Spark JDBCServer服务端hive.server2.use.SSL参数后需要更新Spark客户端的hive-site.xml配置。
![](https://support.huaweicloud.com/cmpntguide-lts-mrs/public_sys-resources/caution_3.0-zh-cn.png)
不建议使用spark-beeline -n {username} -p {password}方式连接 JDBCServer，因为该方式通过ps -ef命令能看到密码信息，推荐使用安全的spark-beeline -n {username} -p方式交互式输入密码。
#### 操作步骤
1. 登录Manager界面，选择"集群 \> 服务 \> Spark \> 配置 \> 全部配置"。
2. 在全部配置界面右上角的搜索框中搜索"hive.basic.authentication.enable"，并修改该参数值为"true"，开启用户名和密码认证功能。
3. （可选）在搜索框中搜索[表1]中的参数，并根据实际需求配置参数值。
   
    表1SparkJDBCServer基于用户名和密码认证的参数配置 
   | 参数                                                 | 参数描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | 默认取值  |
   |:---|:---|:---|
   | hive.basic.authentication.cache.lifecycle          | 开启用户名和密码认证功能时，用于设置认证成功后缓存认证信息的时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 5min  |
   | hive.basic.authentication.failed.lock.time         | 开启用户名和密码认证功能时，用于设置账号被锁定时的时长。                                                                                                                                                                                                                                                                                                                                                                                                                                                                   | 5min  |
   | hive.basic.consecutive.authentication.failed.count | 开启用户名和密码认证功能时，对于单个JDBCServer实例，如果密码连续输入错误达到指定次数，则该账号将被暂时锁定。 注意： 开启用户名和密码认证功能时，如果使用 ZooKeeper地址连接JDBCServer，会先使用用户名和密码访问ZooKeeper，用户名密码黑名单策略以ZooKeeper的为准。                                                                                                                                                                                                            | 5     |
   | hive.server2.use.SSL                               | 是否开启SSL通道加密，在使用用户名和密码认证功能时开启可以保障数据传输的安全性。 集群已启用Kerberos认证（安全模式）默认认证方式为Kerberos，使用SASL协议保障数据传输安全性可以不开启该参数。 注意： Spark JDBCServer服务端配置hive.server2.use.SSL=true时，需要在{*客户端安装目录*}/Spark/spark/conf/hive-site.xml中添加以下配置： ``` <property> <name>hive.server2.use.SSL</name> <value>true</value> </property> ``` | false |
      
   
   
4. 单击"保存"，在弹出窗口单击"确定"保存配置。
5. 单击"实例"，勾选所有JDBCServer实例，选择"更多 \> 重启实例"，输入当前用户密码并单击"确定"重启Spark JDBCServer实例。
6. 在Manager首页，选择"集群 \> 服务 \> ZooKeeper \> 配置 \> 全部配置"。
7. 在全部配置界面右上角的搜索框中搜索"basicAuthEnabled"，并修改该参数值为"true"，开启ZooKeeper用户名和密码认证功能。
8. 单击"保存"，在弹出窗口单击"确定"保存配置。
9. 单击"实例"，勾选所有ZooKeeper实例，选择"更多 \> 重启实例"，输入当前用户密码并单击"确定"重启ZooKeeper实例。
10. 登录安装Spark客户端的节点，执行以下命令登录Spark客户端： 
    执行以下命令，切换到客户端安装目录：
    ```
    cd 客户端安装目录
    ```
    执行以下命令配置环境变量：
    ```
    source bigdata_env
    ```
    执行以下命令登录Spark客户端：
    ```
    spark-beeline -n ${username} -p
    按提示输入密码
    ```
    其中${username}和输入密码为在Manager页面创建的业务用户名和用户密码。
    
    
 
