内容纲要
概要说明
4.X环境上,如果想使用LDAP方式登录inceptor或者streamsql,配置方法和5.X以及后续版本不太相同,需要额外配置hive.server2.authentication.ldap.url
.
详细说明
本例的情况如下:集群内安装了inceptorsql以及streamsql,他们共享了metastore,但是客户反馈无法正常登录streamsql,尝试登录10010的时候报错如下:
[root@amen04-17 streamsql1]# beeline -u "jdbc:hive2://172.22.39.19:10010/default" -n hive -p 123456
scan complete in 4839ms
Connecting to jdbc:hive2://172.22.39.19:10010/default
2020-06-19 11:46:56,364 INFO jdbc.Utils: Supplied authorities: 172.22.39.19:10010
Error: Could not open connection to jdbc:hive2://172.22.39.19:10010/default: Peer indicated failure: PLAIN auth failed: Error validating LDAP user (state=08S01,code=0)
2020-06-19 11:46:57,527 INFO jdbc.Utils: Supplied authorities: 172.22.39.19:10010
2020-06-19 11:46:57,735 INFO jdbc.Utils: Resolved authority: 172.22.39.19:10010
Error: Could not open connection to jdbc:hive2://172.22.39.19:10010/default: Peer indicated failure: PLAIN auth failed: Error validating LDAP user (state=08S01,code=0)
此时查看hive-server2.log可以获取到更详细的日志:
2020-06-19 11:50:38,285 ERROR transport.TSaslTransport: (TSaslTransport.java:open(315)) [HiveServer2-Handler-Pool: Thread-120()] - SASL negotiation failure
javax.security.sasl.SaslException: PLAIN auth failed: Error validating LDAP user
at org.apache.hadoop.security.SaslPlainServer.evaluateResponse(SaslPlainServer.java:108)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
操作步骤
可以参考官方安全手册,2.6.3.4. 为Inceptor 配置 LDAP,具体如下图所示:
此时需要去检查streamsql的配置项:hive.server2.authentication.ldap.url
此配置项需要保持跟集群内的Guardian下面的OpenLDAP Server所在节点保持一致,例如此处为:amen04-17以及amen05-18
端口号为389,所以正确的配置方式为:ldap://amen04-17:389 ldap://amen05-18:389
1、修改streamsql中的配置项:
点击右边的保存更改按钮
2、点击页面右上角的更多操作->配置服务按钮,进行配置服务:
3、配置服务完成后重启streamsql:
先停止再启动
4、重新尝试登录beeline:
登陆成功
FAQ
如果出现inceptorsql无法登陆且报错信息类似的情况,也可以按照同样的思路排查并设置验证