1

Ich habe bereits begonnen, Kafka zu lernen. Grundlegende Operationen darauf versuchen. Ich bin auf einen Punkt gestoßen, der über die "Broker" spricht.NoBrokersVerfügbar: NoBrokersAvailable-Kafka Fehler

Mein Kafka läuft, aber wenn ich eine Partition erstellen möchte.

from kafka import TopicPartition 
(ERROR THERE) consumer = KafkaConsumer(bootstrap_servers='localhost:1234') 
consumer.assign([TopicPartition('foobar', 2)]) 
msg = next(consumer) 

Traceback (jüngste Aufforderung zuletzt): Datei "" Linie 1 in File „/usr/local/lib/python2.7/dist-packages/kafka/consumer/group. py ", Zeile 284, in init selb._client = KafkaClient (metrics = self._metrics, ** self.config) Datei" /usr/local/lib/python2.7/dist-packages/kafka/client_async .py ", Zeile 202, in init self.config ['api_version'] = self.check_version (timeout = check_timeout) Datei" /usr/local/lib/python2.7/dist-packages/ kafka/client_async.py“, Linie 791, in check_version raise Errors.NoBrokersAvailable() kafka.errors.NoBrokersAvailable: NoBrokersAvailable

+0

überprüft Schritte zum Erstellen einer Kafka Data-Pipeline. Folgen Sie dem Link unten. https://stackoverflow.com/questions/35689238/kafka-python-producer-is-not-able-to-connect/49212019#49212019 – user2468325

Antwort

1

Es sieht aus wie Sie Nachrichten starten wollen raubend statt partions zu schaffen. Trotzdem - können Sie Kafka in Port 1234 erreichen? 9092 ist Kafkas Standard-Port vielleicht können Sie dieses versuchen. Wenn haben Sie den richtigen Port aber Ihre Anwendung erzeugt immer noch Fehler, die Sie können versuchen, eine Konsole Verbraucher verwenden das Setup zu testen:

bin/kafka-console-producer.sh --broker-list localhost:<yourportnumber> --topic foobar

Die Konsole Verbraucher ist Teil der Standard kafka Verteilung. Vielleicht kommen Sie damit der Ursache des Problems ein wenig näher.

1

Sie können keine Partitionen innerhalb eines Verbrauchers erstellen. Partitionen werden erstellt, wenn Sie ein Thema erstellen. Zum Beispiel Werkzeug mit der Befehlszeile:

bin/kafka-topics.sh \ 
    --zookeeper localhost:2181 \ 
    --create --topic myNewTopic \ 
    --partitions 10 \ 
    --replication-factor 3 

Dieses ein neues Thema „myNewTopic“ mit 10 Partitionen erstellt (nummeriert von 0 bis 9) und Replikationsfaktor 3. (siehe http://docs.confluent.io/3.0.0/kafka/post-deployment.html#admin-operations und https://kafka.apache.org/documentation.html#quickstart_createtopic)

Innerhalb Ihres Consumer, wenn Sie assign() aufrufen, bedeutet dies, dass Sie die entsprechende Partition konsumieren möchten und diese Partition muss bereits vorhanden sein.

0

Ich weiß nicht, ob diese Antwort noch relevant ist, aber kürzlich das gleiche Problem in einem VBox-VM-Broker gelöst wurde, der vom Windows-Betriebssystem des Hosts aus nicht erreichbar ist. Da Sie erwähnt bootsrap_servers in KafkaConsumer, ich nehme an, Sie verwenden mindestens kafka 0.10.0.0

Bitte suchen Sie die advertised.listeners Eigenschaft in server.properties Datei und legen Sie es auf PLAINTEXT://localhost:9092 oder PLAINTEXT://<broker_ip>:9092

Aber bevor Sie setzen stellen Sie sicher, dass Ihr Broker von der Umgebung aus erreichbar ist, in der Ihr Consumer läuft (indem Sie ping localhost tun).

Außerdem müssen Sie den Kafka-Server und den Consumer/Producer (was auch immer läuft) neu starten und versuchen, zu senden/zu empfangen.

Zum Beispiel, wenn Sie VM ausgeführt werden, können Sie gerne Host-Only-Adapter verwenden den Broker erreichbar von Host-Maschine

Hinweis zu machen: Diese Konfiguration funktioniert für Kafka Server> = 0.10.XX aber nicht für 0.8.2.X. Nicht auf 0.9.0.X