我正在尝试使用beeline连接到具有kerberos身份验证的配置单元。我已经用初始化了一张票 kinit -V --kdc-hostname=<HOSTNAME> -kt /etc/krb5.keytab <USER@REALM>
我可以看到它在我跑步的时候是活跃的 klist
但当我尝试连接到hive时,会收到一条众所周知的错误消息: SASL negotiation failure javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
我将log4j级别更改为debug,并发现以下内容: DEBUG HiveAuthFactory: Cannot find private method "getKeytab" in class:org.apache.hadoop.security.UserGroupInformation
在这之后,beeline尝试使用我的unix用户名进行身份验证,这显然是失败的。所以我认为问题是beeline找不到我的keytab文件。
1条答案
按热度按时间z18hc3ub1#
最可能的问题是直线命令。
确保正确提供身份验证参数,并在连接字符串周围加双引号。
beeline -u "jdbc:hive2://HOSTNAME:10000/default;principal=hive/hostname@Example.com"
还要检查kerberos主体是否具有访问配置单元的权限。