连接到impala和hbase的Kerberos错误

时间:2017-08-19 11:02:47

标签: hadoop hbase hdfs kerberos impala

我们正在开发一个与hadoop组件(如HDFS,HBase和Impala)交互的Web应用程序。 集群是kerberized,我们使用JAAS配置进行身份验证。 我们在VM参数中配置JAAS,如下所示

-Djava.security.auth.login.config=/user/gss-jaas.conf
-Djava.security.krb5.conf=/user/krb5.ini
-Djavax.security.auth.useSubjectCredsOnly=false 

我们的JAAS配置如下

com.sun.security.jgss.initiate {
  com.sun.security.auth.module.Krb5LoginModule required
  useTicketCache=false
  doNotPrompt=true
  useKeyTab=true
  keyTab="file:C:/blah/blah/dummy.keytab"
  principal="dummy@SOME.REALM"
  debug=false;
};

连接到hbase和Hdfs时工作正常。但在与Impala联系时,我们遇到了问题。 当我们将com.sun.security.jgss.initiate更改为Client时,我们可以与Impala建立联系 但我们不想改变或切换Jaas配置。

我们有什么办法可以为所有服务使用相同的JAAS配置文件吗?我们不想使用System.setProperties来执行此操作。而且当在JAAS配置之间切换时,我们会遇到异常。所以使用相同的配置文件会更好。

任何帮助?

1 个答案:

答案 0 :(得分:3)

您无需切换。只需使用两者!

您是否想知道为什么有两个强制; - 一个在最后一个参数之后,一个在括号之后?这是因为您可以在该部分(从第1个到最后一个尝试)中定义多个机制,并在同一配置文件中使用多个部分(具有不同的名称)。

查看Kafka文档,例如,他们如何在同一文件中为代理和客户端应用程序设置JAAS配置:http://docs.confluent.io/current/kafka/sasl.html

如果您对多种机制感到好奇,请查看Java文档(但要小心,这些内容是调整和调试的噩梦......) https://docs.oracle.com/javase/8/docs/jre/api/security/jaas/spec/com/sun/security/auth/module/Krb5LoginModule.html < / p>