Kerberos java到配置单元密钥表身份验证,登录失败UserGroupInformation.loginUserFromKeytab

Kerberos java到配置单元密钥表身份验证,登录失败UserGroupInformation.loginUserFromKeytab,login,hive,kerberos,metastore,keytab,Login,Hive,Kerberos,Metastore,Keytab,我试图将kerberos密钥表身份验证工作从java转移到配置单元,但没有找到解决方案来解决这个问题 org.apache.hadoop.conf.Configuration conf = new org.apache.hadoop.conf.Configuration(); conf.set("hadoop.security.authentication", "kerberos"); conf.set(HiveClientFactory.HIVE_M

我试图将kerberos密钥表身份验证工作从java转移到配置单元,但没有找到解决方案来解决这个问题

    org.apache.hadoop.conf.Configuration conf = new   
       org.apache.hadoop.conf.Configuration();
    conf.set("hadoop.security.authentication", "kerberos");
    conf.set(HiveClientFactory.HIVE_METASTORE_URIS,"thrift://{URL}");
    UserGroupInformation.setConfiguration(conf);
    UserGroupInformation.loginUserFromKeytab(krbPrincipal, keyTabPath);
java.io.IOException:keytab中{krbPrincipal}的登录失败 {keyTabPath}at org.apache.hadoop.security.UserGroupInformation.loginUserFromKeytab(UserGroupInformation.java:855)

原因:javax.security.auth.login.login异常:无法获取 来自用户的密码

在 com.sun.security.auth.module.Krb5LoginModule.promptForPass(Krb5LoginModule.java:789) 在 com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:654)


我非常希望能有一些见解来帮助解决这个问题。

您的问题是关于HDFS Kerberos身份验证的,但代码示例(可能还有错误消息)是关于Hive Metastore Kerberos身份验证的。请记住,Oozie使用特定的“HCat凭据”部分进行元存储身份验证…感谢您的建议,更正了问题,Oozie的配置单元操作一直在使用HCat凭据,但是Oozie的Java操作-Java类使用配置单元\元存储在内部调用配置单元(请参阅问题中的代码片段)它失败了,错误为java.io.IOException:keytab{keytabath}中的{krbPrincipal}登录失败好了,现在我明白了。您尝试使用Hadoop身份验证机制连接到Metastore(Thrift服务)或HiveServer2(再次连接Thrift)。AFAIK它不起作用,因为Thrift客户端直接调用低级JAAS/GSSAPI身份验证库。换句话说,它似乎符合Kerberos,但不支持Hadoop。还包括中的讨论(特别是跟踪标志…)