直线找不到私有方法“ getKeytab”

时间:2018-11-29 07:27:48

标签: hive kerberos beeline

我正在尝试使用beeline通过Kerberos身份验证连接到Hive。我已经用

初始化了票证

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 HiveAuthFactory: Cannot find private method "getKeytab" in class:org.apache.hadoop.security.UserGroupInformation

,然后,beeline尝试使用我的unix用户名进行身份验证,这显然是失败的。因此,我认为问题在于beeline找不到我的keytab文件。

1 个答案:

答案 0 :(得分:0)

最可能的问题是beeline命令。

确保正确提供身份验证参数,并在连接字符串周围加上双引号。

beeline -u "jdbc:hive2://HOSTNAME:10000/default;principal=hive/hostname@Example.com"

还要检查您的Kerberos主体是否具有访问配置单元的权限。