2017-01-09 16 views
4

각 노드가 별도의 브로커로 사용되는 2 노드 카프카 클러스터 (EC2 인스턴스)가 있습니다. 나는 다음과 같은 명령을 사용하여 리더 인스턴스의 프로듀서를 실행하면 :메시지를 생성 할 때 주제를 찾을 수 없습니다. UNKNOWN_TOPIC_OR_PARTITION

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

을 나는 다음과 같은 오류를 얻을.

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) ...

kaka-topics.sh과 함께 항목을 나열하면 해당 항목이 있음을 알 수 있습니다.

와 주제에 대한 설명 : 나는 카프카 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 

내가 두 번째 호스트에서 메시지를 생성 할 때 나는 아래의 메시지가? 감사합니다. .

+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를 지정하면이 예외가 더 이상 발생하지 않습니다. 당신이이 브로커 클러스터를 가지고 있기 때문에, 메시지를 생성하기 위해 아래의 명령을 실행 :이 클러스터에서 브로커의 모두에 메시지를 보내드립니다

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

.

+0

카프카 제작자는 특정 주제에 대한 파티션 리더가있는 서버에 모든 메시지를 보냅니다. 그래서 마지막 문장이 틀립니다. 브로커 목록은 초기 검색에 사용됩니다. – YamYamm