2017-01-09 18 views
4

2ノードのカフカクラスタ(EC2インスタンス)があり、各ノードは別々のブローカーとして使用されています。リーダーインスタンスで次のコマンドを使用してプロデューサを実行すると、メッセージを生成するときにトピックが見つかりません:UNKNOWN_TOPIC_OR_PARTITION

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

次のエラーが発生します。 kaka-topics.shでトピックをリスト

test message [2017-01-09 13:22:39,483] WARN Error while fetching metadata with correlation id 0 : {test=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient) [2017-01-09 13:22:39,562] WARN Error while fetching metadata with correlation id 1 : {test=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient) [2017-01-09 13:22:39,663] WARN Error while fetching metadata with correlation id 2 : {test=UNKNOWN_TOPIC_OR_PARTITION} (org.apache.kafka.clients.NetworkClient) ...

はトピックが存在することを示しています。

で話題の説明:私はカフカ0.10.1.1を使用しています

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 

server.propertesファイルが含まれています

WARN Got error produce response with correlation id 1 on topic-partition test-4, retrying (2 attempts left). Error: NOT_LEADER_FOR_PARTITION (org.apache.kafka.clients.producer.internals.Sender) ....

は誰が助けてください:

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番目のホストからのメッセージを生成しようとすると、私は以下のメッセージが表示されますか?おかげさまで

+1

すべてのブローカーを '--broker-list'に指定してみてください。このエラーは、プロデューサがブローカによってサービスされていないパーティションにメッセージを送信しようとしたときに表示されることがあります。 AFAIK、 'advertised。* 'の設定は廃止予定です。 –

+0

両方のホストを '--broker-list'に置くと、私は同じエラーが表示されます。 – saloua

+0

port、host.name、advertised.host.name、およびadvertised.portの設定は必要ありません。マシン外のクライアントがサービスが待機しているアドレスとは異なるアドレスを参照する場合にのみ、listersとadvertised.listenersを使用してください。次に、ブローカが実行されているマシンのプライベートIPに等しいブローカリストを使用してください。 –

答えて

3

トピックtestのレプリケーションファクタ2を作成してください。この例外はもう発生しません。あなたは2ブローカクラスタを持っているので、メッセージを生成するには、以下のコマンドを実行し :

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

これは、クラスタ内のブローカーの両方にメッセージを送信します。

+0

カフカプロデューサーは、その特定のトピックのパーティションリーダーを持つサーバーにすべてのメッセージを送信します。あなたの最後の文は間違っています。ブローカリストは最初の発見に使用されます。 – YamYamm

関連する問題