HiveServer2支持多种认证方式,通过hive.server2.authentication
参数来设置,包括nosasl, none, ldap, kerberos, pam, custom
本文介绍如何在E-MapReduce中使用LDAP配置HiveServer的认证。
配置
配置 | 值 | 备注 |
---|---|---|
hive.server2.authentication | LDAP | xx |
hive.server2.authentication.ldap.url | ldap://{emr-header-1-hostname}:10389 | {emr-header-1-hostname}以自己集群为准,可以登录集群的emr-header-1上执行hostname命令获取 |
hive.server2.authentication.ldap.baseDN | ou=people,o=emr |
在E-MapReduce的集群配置管理下的Hive组件中添加上述3个配置后,重启一下HiveServer2,即可以生效。
LDAP中添加账号
E-MapReduce集群中ApacheDS组件就是一个LDAP的服务,默认用于knox的用户账号管理, 我们可以复用knox的账号体系。
设置knox的账号参考文档 -> 设置Knox用户 -> 使用集群中的LDAP服务 -> 方式一(推荐)
设置完账号后,就可以用账号密码去连HiveServer2了。
测试
如添加了emr-guest
账号以及密码,现在用/usr/lib/hive-current/bin/beeline
去登录连接HiveServer2
beeline> !connect jdbc:hive2://emr-header-1:10000/
Enter username for jdbc:hive2://emr-header-1:10000/: emr-guest
Enter password for jdbc:hive2://emr-header-1:10000/: emr-guest-pwd
Transaction isolation: TRANSACTION_REPEATABLE_READ
如上可以正常连接。
如果使用的密码不正确,则会抛如下异常:
Error: Could not open client transport with JDBC Uri: jdbc:hive2://emr-header-1:10000/: Peer indicated failure: Error validating the login (state=08S01,code=0)