Kafka-在JAAS配置Java中找不到'KafkaClient'条目 [英] Kafka - Could not find a 'KafkaClient' entry in the JAAS configuration java

查看:3450
本文介绍了Kafka-在JAAS配置Java中找不到'KafkaClient'条目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在使用简单的Kafka消费者程序时遇到了麻烦:

I'm having some troubles with a simple Kafka consumer program:

18/06/04 18:13:49 ERROR /log/log.txt: org.apache.kafka.common.KafkaException: Failed to construct kafka consumer
org.apache.kafka.common.KafkaException: Failed to construct kafka consumer
        at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:647)
        at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:542)
        at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:524)
        at com.carrefour.entequadratura.KafkaHandler.createConsumer(KafkaHandler.java:96)
        at com.carrefour.entequadratura.KafkaHandler.runConsumer(KafkaHandler.java:104)
        at com.carrefour.entequadratura.Main.main(Main.java:48)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:730)
        at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:181)
        at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:206)
        at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:121)
        at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: org.apache.kafka.common.KafkaException: java.lang.IllegalArgumentException: Could not find a 'KafkaClient' entry in the JAAS configuration. System property 'java.security.auth.login.config' is not set
        at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:74)
        at org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:60)
        at org.apache.kafka.clients.ClientUtils.createChannelBuilder(ClientUtils.java:79)
        at org.apache.kafka.clients.consumer.KafkaConsumer.<init>(KafkaConsumer.java:577)
        ... 14 more
Caused by: java.lang.IllegalArgumentException: Could not find a 'KafkaClient' entry in the JAAS configuration. System property 'java.security.auth.login.config' is not set
        at org.apache.kafka.common.security.kerberos.Login.login(Login.java:295)
        at org.apache.kafka.common.security.kerberos.Login.<init>(Login.java:104)
        at org.apache.kafka.common.security.kerberos.LoginManager.<init>(LoginManager.java:44)
        at org.apache.kafka.common.security.kerberos.LoginManager.acquireLoginManager(LoginManager.java:85)
        at org.apache.kafka.common.network.SaslChannelBuilder.configure(SaslChannelBuilder.java:55)
        ... 17 more

这些是我的财产:

BOOTSTRAP_SERVERS=xxxxxxxxxxxxxxxxxx:6667
GROUP_ID=EnteLoader
AUTO_COMMIT=false
AUTO_COMMIT_INTERVAL=10000
SESSION_TIMEOUT=30000
MAX_POLL_RECORDS=5
KEY_DESERIALIZER=org.apache.kafka.common.serialization.StringDeserializer
VALUE_DESERIALIZER=org.apache.kafka.common.serialization.StringDeserializer
SECURITY_PROTOCOL=SASL_PLAINTEXT
SASL_MECHANISM=GSSAPI
SASL_KERBEROS_SERVICE_NAME=kafka

我了解到这可能是与jaas.conf相关的问题,但是我是Kafka的新手,我不知道如何找到它..

I read about this could be a possible problem related to jaas.conf but I'm new into Kafka and I don't know how to find it..

能请你帮我吗? 谢谢!

Could you please help me? Thank you!

推荐答案

有两种方法可以将jaas conf传递给您的kafka用户.

There are 2 ways you can pass jaas conf to your kafka consumer.

  1. 如果您使用的kafka-client版本大于0.10.2.1,则可以设置属性sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="USERNAME" password="PASSWORD";

如错误消息所述,您可以设置系统属性java.security.auth.login.config,为此,您需要将jaas配置字符串放入文件中,并将该路径作为上述系统属性的值.

As your error message says you can set system property java.security.auth.login.config, For this you need to put your jaas config string to a file and give that path as value for above system property.

jaas.conf

KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
serviceName="yourServiceName"
username="userName"
password="password";
};

然后设置环境变量:

System.setProperty("java.security.auth.login.config","/path/to/jaas.conf");

我建议使用第一种选择,因为在使用第二种选择时会遇到一些问题.

I would recommend 1st option since I have faced some issues when I went with the 2nd option.

这篇关于Kafka-在JAAS配置Java中找不到'KafkaClient'条目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆