尝试在连接Kafka时使用kerberos auth时遇到问题。使用scala和我的jaas.config看起来像这样。
[KafkaClient {需要com.sun.security.auth.module.Krb5LoginModuleuseKeyTab = truekeyTab =“ / etc / security / keytabs / storm.service.keytab”storeKey = trueuseTicketCache = falseserviceName =“ kafka”Principal =“ [email protected]”;调试=真client = true; };
线程“主”中的异常org.apache.kafka.common.KafkaException:无法构造kafka使用者在org.apache.kafka.clients.consumer.KafkaConsumer。(KafkaConsumer.java:799)在org.apache.kafka.clients.consumer.KafkaConsumer。(KafkaConsumer.java:615)在org.apache.kafka.clients.consumer.KafkaConsumer。(KafkaConsumer.java:596)在org.apache.spark.sql.kafka010.SubscribeStrategy.createConsumer(ConsumerStrategy.scala:62)在org.apache.spark.sql.kafka010.KafkaOffsetReader.createConsumer(KafkaOffsetReader.scala:314)在org.apache.spark.sql.kafka010.KafkaOffsetReader。(KafkaOffsetReader.scala:78)在org.apache.spark.sql.kafka010.KafkaSourceProvider.createContinuousReader(KafkaSourceProvider.scala:130)在org.apache.spark.sql.kafka010.KafkaSourceProvider.createContinuousReader(KafkaSourceProvider.scala:43)在org.apache.spark.sql.streaming.DataStreamReader.load(DataStreamReader.scala:185)在com.gm.SparkDataIngest.Main $ .main(Main.scala:119)在com.gm.SparkDataIngest.Main.main(Main.scala)
原因:java.lang.IllegalArgumentException:登录模块控制标志在JAAS配置中不可用在org.apache.kafka.common.security.JaasConfig.loginModuleControlFlag(JaasConfig.java:85)在org.apache.kafka.common.security.JaasConfig.parseAppConfigurationEntry(JaasConfig.java:111)在org.apache.kafka.common.security.JaasConfig。(JaasConfig.java:63)在org.apache.kafka.common.security.JaasContext.load(JaasContext.java:148)在org.apache.kafka.common.security.JaasContext.loadClientContext(JaasContext.java:142)在org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:119)在org.apache.kafka.common.network.ChannelBuilders.clientChannelBuilder(ChannelBuilders.java:65)在org.apache.kafka.clients.ClientUtils.createChannelBuilder(ClientUtils.java:88)在org.apache.kafka.clients.consumer.KafkaConsumer。(KafkaConsumer.java:713)
我认为该问题可能是由于未提供堆栈跟踪中提到的JAAS conf而引起的。提供JAAS配置的方法是:
sasl.jaas.config
java.security.auth.login.config
[更多参考,请参考cloudera blog或confulent blog或question。
让我知道是否有帮助!
如果您的JAAS配置确实是您所显示的,那么您会出现语法错误-特别是,额外的分号;使解析器失败,因为它找到了第二个配置项有道理。
JAAS配置应该很简单(并注意分号在哪里...
Blurb {
some.login.module.class status
option1=value1
option2="value2"
;
};
...或复杂(现在您了解了分号的含义...
Blurb {
some.login.module.class status
option1=value1
option2="value2"
;
other.login.module.class status
option3=value3
;
};
DahDah {
some.login.module.class status
option1=value99
option2="value88"
;
};