配置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'
操作步骤
- 登录Manager界面,选择“集群 > 服务 > Spark > 配置 > 全部配置”。
- 在全部配置界面右上角的搜索框中搜索“hive.basic.authentication.enable”,并修改该参数值为“true”,开启用户名和密码认证功能。
- (可选)在搜索框中搜索表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
- 单击“保存”,在弹出窗口单击“确定”保存配置。
- 单击“实例”,勾选所有JDBCServer实例,选择“更多 > 重启实例”,输入当前用户密码并单击“确定”重启Spark JDBCServer实例。
- 在Manager首页,选择“集群 > 服务 > ZooKeeper > 配置 > 全部配置”。
- 在全部配置界面右上角的搜索框中搜索“basicAuthEnabled”,并修改该参数值为“true”,开启ZooKeeper用户名和密码认证功能。
- 单击“保存”,在弹出窗口单击“确定”保存配置。
- 单击“实例”,勾选所有ZooKeeper实例,选择“更多 > 重启实例”,输入当前用户密码并单击“确定”重启ZooKeeper实例。
- 登录安装Spark客户端的节点,执行以下命令登录Spark客户端:
执行以下命令,切换到客户端安装目录:
cd 客户端安装目录执行以下命令配置环境变量:
source bigdata_env
执行以下命令登录Spark客户端:
spark-beeline -n ${username} -p '${password}'
其中${username}和${password}为在Manager页面创建的业务用户名和用户密码。