各ノードが個別のブローカーとして使用される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)....
誰も助けてくれますか?ありがとう。
トピックtest
のレプリケーション係数2を作成すると、この例外は発生しなくなります。 2つのブローカークラスターがあるため、以下のコマンドを実行してメッセージを生成します。
kafka-console-producer.sh --broker-list localhost:9092,localhost:9093 --topic test
これにより、クラスター内の両方のブローカーにメッセージが送信されます。