ウェブサイトごとにkafka(0.8.1 with 2.9.2 Scala)の安定バージョンをインストールし、3ノードのzookeeperアンサンブル(3.4.6)で実行しています。テストトピックを作成しようとしましたが、トピックのパーティションにリーダーが割り当てられていないことに注意してください。
[kafka_2.9.2-0.8.1]$ ./bin/kafka-topics.sh --zookeeper <zookeeper_ensemble> --describe --topic test-1
Topic:test-1 PartitionCount:1 ReplicationFactor:3 Configs:
Topic: test-1 Partition: 0 **Leader: none** Replicas: 0,1,2 **Isr:**
とにかくコンソールプロデューサーを使用してトピックに書き込もうとしましたが、LeaderNotAvailableException例外に遭遇しました:
[kafka_2.9.2-0.8.1]$ ./kafka-console-producer.sh --broker-list <broker_list> --topic test-1
hello world
[2014-04-22 11:58:48,297] WARN Error while fetching metadata [{TopicMetadata for topic test-1 ->
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException (kafka.producer.BrokerPartitionInfo)
[2014-04-22 11:58:48,321] WARN Error while fetching metadata [{TopicMetadata for topic test-1 ->
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException (kafka.producer.BrokerPartitionInfo)
[2014-04-22 11:58:48,322] ERROR Failed to collate messages by topic, partition due to: Failed to fetch topic metadata for topic: test-1 (kafka.producer.async.DefaultEventHandler)
[2014-04-22 11:58:48,445] WARN Error while fetching metadata [{TopicMetadata for topic test-1 ->
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException (kafka.producer.BrokerPartitionInfo)
[2014-04-22 11:58:48,467] WARN Error while fetching metadata [{TopicMetadata for topic test-1 ->
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException (kafka.producer.BrokerPartitionInfo)
[2014-04-22 11:58:48,467] ERROR Failed to collate messages by topic, partition due to: Failed to fetch topic metadata for topic: test-1 (kafka.producer.async.DefaultEventHandler)
[2014-04-22 11:58:48,590] WARN Error while fetching metadata [{TopicMetadata for topic test-1 ->
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException (kafka.producer.BrokerPartitionInfo)
[2014-04-22 11:58:48,612] WARN Error while fetching metadata [{TopicMetadata for topic test-1 ->
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException (kafka.producer.BrokerPartitionInfo)
[2014-04-22 11:58:48,612] ERROR Failed to collate messages by topic, partition due to: Failed to fetch topic metadata for topic: test-1 (kafka.producer.async.DefaultEventHandler)
[2014-04-22 11:58:48,731] WARN Error while fetching metadata [{TopicMetadata for topic test-1 ->
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException (kafka.producer.BrokerPartitionInfo)
[2014-04-22 11:58:48,753] WARN Error while fetching metadata [{TopicMetadata for topic test-1 ->
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException (kafka.producer.BrokerPartitionInfo)
[2014-04-22 11:58:48,754] ERROR Failed to collate messages by topic, partition due to: Failed to fetch topic metadata for topic: test-1 (kafka.producer.async.DefaultEventHandler)
[2014-04-22 11:58:48,876] WARN Error while fetching metadata [{TopicMetadata for topic test-1 ->
No partition metadata for topic test-1 due to kafka.common.LeaderNotAvailableException}] for topic [test-1]: class kafka.common.LeaderNotAvailableException (kafka.producer.BrokerPartitionInfo)
[2014-04-22 11:58:48,877] ERROR Failed to send requests for topics test-1 with correlation ids in [0,8] (kafka.producer.async.DefaultEventHandler)
[2014-04-22 11:58:48,878] ERROR Error in handling batch of 1 events (kafka.producer.async.ProducerSendThread)
kafka.common.FailedToSendMessageException: Failed to send messages after 3 tries.
at kafka.producer.async.DefaultEventHandler.handle(DefaultEventHandler.scala:90)
at kafka.producer.async.ProducerSendThread.tryToHandle(ProducerSendThread.scala:104)
at kafka.producer.async.ProducerSendThread$$anonfun$processEvents$3.apply(ProducerSendThread.scala:87)
at kafka.producer.async.ProducerSendThread$$anonfun$processEvents$3.apply(ProducerSendThread.scala:67)
at scala.collection.immutable.Stream.foreach(Stream.scala:547)
at kafka.producer.async.ProducerSendThread.processEvents(ProducerSendThread.scala:66)
at kafka.producer.async.ProducerSendThread.run(ProducerSendThread.scala:44)
また、これは最初は数日間機能していましたが、作成されたトピックには突然、このリーダーの問題がありました。
Kafkaは、外部調整フレームワーク(デフォルトではZookeeper)を使用して構成を維持します。設定はKafkaログデータと同期していないようです。この場合、影響を受けるトピックデータと関連するZookeeperデータを削除します。
テスト環境の場合:
Kafka-server
およびZookeeper-server
を停止します/tmp/kafka-log
と/tmp/zookeeper
です。Kafka-server
とZookeeper-server
をもう一度開始しますこれで、トピックを再び使用できるようになりました。
本番環境の場合:
Kafkaトピックは異なるディレクトリに保存されるため、特定のディレクトリを削除する必要があります。 Zookeeperクライアントを使用して、Zookeeperから/brokers/{broker_id}/topics/{broken_topic}
も削除する必要があります。
愚かなことをする前に、Kafkaのドキュメントを注意深く読んで、構成構造を確認してください。 Kafkaは、問題をより簡単に解決できるように、トピック削除機能( KAFKA-3 )を公開しています。
同じ問題がありました。 Kafkaでは、マシンのホスト名を解決して、それ自体に接続する必要があることがわかりました。
私は ホスト名を更新しました 私のマシンで、zookeeperとkafkaを再起動した後、トピックを正しく書き込むことができました。
完全修飾ホスト名で/etc/hosts
の127.0.0.1
にエントリを追加することで、この問題を解決しました。
127.0.0.1 x4239433.your.domain.com x4239433
生産者と消費者は順調に働き始めました。
同じ問題がありました。結局、Kafkaノードを停止してから削除する必要がありました。その後、 Kafkaトピックの削除方法に関するアドバイスに従ってください 。壊れたトピックを取り除くと、Kafkaを再び正常に開始できました。
より良いアプローチがあるかどうか、そして今後このような事態を避ける方法を知りたいです。
私は同じ問題を抱えていて、JDKを1.7から1.6に解決しました
考えられるもう1つの答え-kafka advertised.hostname
内のconfig/server.properties
のIPアドレスは、余分なスペースで誤って入力されている可能性があります。
私の場合
advertised.Host.name=10.123.123.211_\n (where _ is an extra space)
正しいのではなく
advertised.Host.name=10.123.123.211\n
なんらかの理由で、これは問題なく6か月間機能していました。おそらく、ライブラリの更新によって、余分なスペースを削除するIPアドレスのリラックスした検索が削除されたと考えられます。
構成ファイルの簡単な修正とkafkaの再起動により、この問題が解決します。
JDKの問題です。
Openjdkをインストールしました
Java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.4) (7u51-2.4.4-0ubuntu0.12.04.2)
OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)
しかし、私はそれをOracle jdkに変更しました(このリンクに従ってください: http://www.webupd8.org/2012/06/how-to-install-Oracle-Java-7-in-debian.html )
Java version "1.7.0_80" Java(TM) SE Runtime Environment (build
1.7.0_80-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
今では正常に動作します。お役に立てれば。
同じ問題があった。コンシューマ/プロデューサが使用している各パーティションに少なくとも1つのトピックがあることを確認してください。 Zookeeperは、パーティションを使用するトピックがない場合、パーティションのリーダーを見つけられません。
ローカルシステム(mac OS X El Capitan)でKafkaで遊んでいたときに、まったく同じ問題に直面しました。問題は私のzookeeperにあり、正しい設定ファイルを参照していませんでした。 zookeeperを再起動し、Kafkaを実行して、次のコマンドを実行します。 LeaderがNoneでないことを確認してください。 Leaderがnoneの場合、そのトピックを削除して再作成します。
kafka-topics --zookeeper localhost:2181 --describe --topic pytest
出力は次のようになります
Topic:pytest PartitionCount:1 ReplicationFactor:1 Configs:
Topic: pytest Partition: 0 Leader: 0 Replicas: 0 Isr: 0
これが役立つことを願っています。
OpenshiftのKafka
、Zookeeper
ポッドの問題に直面し、KafkaがTLSに対応していました。以下の環境変数をKafkaに追加する必要がありました。
KAFKA_ZOOKEEPER_CONNECT
KAFKA_SSL_KEYSTORE_LOCATION
KAFKA_SSL_TRUSTSTORE_LOCATION
KAFKA_SSL_KEYSTORE_PASSWORD
KAFKA_SSL_TRUSTSTORE_PASSWORD
KAFKA_ADVERTISED_LISTENERS
KAFKA_INTER_BROKER_LISTENER_NAME
KAFKA_LISTENERS
また、変数を設定した後、ポッドを削除して再作成する必要がありました。
Config/server.propertiesに「advertised.Host.name = localhost」を追加し、Kafkaサーバーを再起動します。それは私のために働いた