更新时间:2025-12-10 GMT+08:00
分享

配置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 {password}

约束与限制

  • 集群已启用Kerberos认证(安全模式)支持此功能。
  • 用于进行认证的用户必须为在Manager界面的“系统 > 权限 > 用户”中创建的用户。
  • Spark JDBCServer基于ZooKeeper实现负载均衡,客户端连接Spark JDBCServer前会先访问ZooKeeper,因此Spark JDBCServer开启用户名和密码认证功能时ZooKeeper也需要开启此功能。
  • 修改Spark JDBCServer服务端hive.server2.use.SSL参数后需要更新Spark客户端的hive-site.xml配置。
  • 开启用户名和密码认证功能时,使用spark-beeline -n {username} -p {password}连接JDBCServer时,如果username和password中存在于shell冲突的字符,要按照shell使用规范,转译处理。

    例如password中存在单引号时:spark-beeline -n {username} -p 'xxx'xxx'转译处理为spark-beeline -n {username} -p $'xxx\'xxx'

操作步骤

  1. 登录Manager界面,选择“集群 > 服务 > Spark > 配置 > 全部配置”。
  2. 在全部配置界面右上角的搜索框中搜索“hive.basic.authentication.enable”,并修改该参数值为“true”,开启用户名和密码认证功能。
  3. (可选)在搜索框中搜索表1中的参数,并根据实际需求配置参数值。

    表1 Spark JDBCServer基于用户名和密码认证的参数配置

    参数

    参数描述

    默认取值

    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 '${password}'

    其中${username}和${password}为在Manager页面创建的业务用户名和用户密码。

相关文档