web-dev-qa-db-ja.com

メッセージを生成するときにトピックが見つかりません:UNKNOWN_TOPIC_OR_PARTITION

各ノードが個別のブローカーとして使用される2ノードkafkaクラスター(EC2インスタンス)があります。次のコマンドでリーダーインスタンスでプロデューサーを実行すると:

kafka-console-producer.sh   --broker-list localhost:9092 --topic test

次のエラーが表示されます。

テストメッセージ[2017-01-09 13:22:39,483]相関ID 0のメタデータのフェッチ中に警告エラー:{test = UNKNOWN_TOPIC_OR_PARTITION}(org.Apache.kafka.clients.NetworkClient)[2017-01-09 13:22: 39,562]相関ID 1のメタデータのフェッチ中に警告エラー:{test = UNKNOWN_TOPIC_OR_PARTITION}(org.Apache.kafka.clients.NetworkClient)[2017-01-09 13:22:39,663]相関ID 2のメタデータのフェッチ中に警告エラー: {test = UNKNOWN_TOPIC_OR_PARTITION}(org.Apache.kafka.clients.NetworkClient)...

kaka-topics.shでトピックをリストすると、トピックが存在することがわかります。

トピックの説明:

kafka-topics.sh --zookeeper localhost:2181 --describe --topic test

戻り値

 Topic:test PartitionCount:8    ReplicationFactor:1 Configs:
     Topic: test    Partition: 0    Leader: 1   Replicas: 1 Isr: 1
     Topic: test    Partition: 1    Leader: 2   Replicas: 2 Isr: 2
     Topic: test    Partition: 2    Leader: 1   Replicas: 1 Isr: 1
     Topic: test    Partition: 3    Leader: 2   Replicas: 2 Isr: 2
     Topic: test    Partition: 4    Leader: 1   Replicas: 1 Isr: 1
     Topic: test    Partition: 5    Leader: 2   Replicas: 2 Isr: 2
     Topic: test    Partition: 6    Leader: 1   Replicas: 1 Isr: 1
     Topic: test    Partition: 7    Leader: 2   Replicas: 2 Isr: 2

私はkafka 0.10.1.1を使用しています。

server.propertesファイルには以下が含まれます。

listeners=PLAINTEXT://0.0.0.0:9092
advertised.listeners=PLAINTEXT://0.0.0.0:9092
port=9092
Host.name=kafka-node1(kafka-node1 for the second Host)
advertised.Host.name=kafka-node1(kafka-node2 for the second Host)
advertised.port=9092

2番目のホストからメッセージを生成しようとすると、次のメッセージが表示されます。

WARN Gotエラーは、トピックパーティションテスト4で相関ID 1の応答を生成し、再試行します(残り2回の試行)。エラー:NOT_LEADER_FOR_PARTITION(org.Apache.kafka.clients.producer.internals.Sender)....

誰も助けてくれますか?ありがとう。

10
saloua

トピックtestのレプリケーション係数2を作成すると、この例外は発生しなくなります。 2つのブローカークラスターがあるため、以下のコマンドを実行してメッセージを生成します。

kafka-console-producer.sh   --broker-list localhost:9092,localhost:9093 --topic test

これにより、クラスター内の両方のブローカーにメッセージが送信されます。

1
shiba goyal