我正在尝试使用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文件。
答案 0 :(得分:0)
最可能的问题是beeline命令。
确保正确提供身份验证参数,并在连接字符串周围加上双引号。
beeline -u "jdbc:hive2://HOSTNAME:10000/default;principal=hive/hostname@Example.com"
还要检查您的Kerberos主体是否具有访问配置单元的权限。