web-dev-qa-db-ja.com

Kafka-JAAS構成に「KafkaClient」エントリが見つかりませんでしたjava

簡単なKafka消費者プログラム:

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の初心者であり、それを見つける方法がわかりません。

手伝っていただけませんか?ありがとうございました!

4
walzer91

Jaas confをkafka消費者に渡す方法は2つあります。

  1. 0.10.2.1以上のバージョンのkafka-clientを使用している場合は、プロパティsasl.jaas.config=org.Apache.kafka.common.security.plain.PlainLoginModule required username="USERNAME" password="PASSWORD";を設定できます

  2. エラーメッセージにシステムプロパティJava.security.auth.login.configを設定できると記載されているため、jaas構成文字列をファイルに入れ、そのパスを上記のシステムプロパティの値として指定する必要があります。

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");

2番目のオプションを使用したときにいくつかの問題に直面したため、1番目のオプションをお勧めします。

5
Thejas Bhat