无法获得科贝罗斯境界



我是Kerberos/配置单元的新手,希望使用JDBC连接配置单元(实现Kerberos(。

> > org.apache.hadoop.conf.Configuration conf = new
> > org.apache.hadoop.conf.Configuration();
> >             conf.set("hadoop.security.authentication", "Kerberos");
> >             UserGroupInformation.setConfiguration(conf);
> >             UserGroupInformation.loginUserFromKeytab("<principal>", "<path to keytab file>");
> > 
> > 
> > Class.forName(Util.getConstantProperty("hive.class.name"));
> > 
> > log.info("Making connection with Hive DB"); hiveConn =
> > DriverManager.getConnection("<hive db url>",,"hive.user","");

获取错误:

2018-10-29 20:32:50 ERROR ConnectionHandler:80 - java.lang.IllegalArgumentException: Can't get Kerberos realm java.lang.IllegalArgumentException: Can't get Kerberos realm
at org.apache.hadoop.security.HadoopKerberosName.setConfiguration(HadoopKerberosName.java:65)
at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:263)
at org.apache.hadoop.security.UserGroupInformation.setConfiguration(UserGroupInformation.java:299)
at utils.ConnectionHandler.connectHiveDB(ConnectionHandler.java:58)

除了Prazy在评论中的建议

不要忘记在krb5.conf 中设置默认领域

如果您仍然有问题,请将kerberos调试添加到您的命令行中

export HADOOP_OPTS="-Dsun.security.krb5.debug=true"
export HADOOP_ROOT_LOGGER=DEBUG,console

快速解释

如果使用krb5.conf确保您已设置

[libdefaults]
default_realm=EXAMPLE.COM

如果不使用krb5.conf,则设置两个

  • java.security.krb5.kdc
  • java.security.krb5.realm

进一步阅读

供参考,KerberosUtil的源代码
和底层kerberos库getDefaultRealm

请注意,默认情况下getDefaultRealm会出现在krb5.confdefault_realm:中

get("libdefaults", "default_realm");

还有一个地方可以定义realm。。。。通过属性:

java.security.krb5.realm

如果未通过java.security.krb5.kdc定义kdc,则该值将被忽略

在此处记录了这一事实

相关内容

  • 没有找到相关文章

最新更新