Ich versuche einen Kafka-Cluster einzurichten (eigentlich der erste Knoten im Cluster).
Ich habe ein Cluster-Setup für einen einzelnen Knoten. Ich richte Kafka auf einem separaten Knoten ein.
Beide laufen CentOS 6.4, laufen IPV6, was ein bisschen wie ein PITA ist. Ich habe überprüft, dass die Maschinen mit netcat miteinander kommunizieren können.
Wenn ich kafka starte, erhalte ich die folgende Ausnahme (die bewirkt, dass kafka heruntergefahren wird).
EDIT: Ich habe Kafka gestartet, ich musste die Eigenschaft host.name
in der Datei server.config einstellen.
Ich konnte ein Testthema erstellen und Nachrichten vom kafka-Server senden.
Ich bekomme jedoch den gleichen Fehler, wenn ich versuche, die Nachrichten zu konsumieren.
Irgendwelche Hilfe, Vorschläge?
bin/kafka-console-consumer.sh --zookeeper zk1:2181 --topic test --from-beginning
Exception in thread "main" java.net.UnknownHostException: kafka: kafka: Name or service not known
at java.net.InetAddress.getLocalHost(InetAddress.java:1473)
at kafka.consumer.ZookeeperConsumerConnector.<init>(ZookeeperConsumerConnector.scala:107)
at kafka.consumer.ZookeeperConsumerConnector.<init>(ZookeeperConsumerConnector.scala:128)
at kafka.consumer.Consumer$.create(ConsumerConnector.scala:89)
at kafka.consumer.ConsoleConsumer$.main(ConsoleConsumer.scala:178)
at kafka.consumer.ConsoleConsumer.main(ConsoleConsumer.scala)
Caused by: java.net.UnknownHostException: kafka: Name or service not known
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress.lookupAllHostAddr(InetAddress.java:901)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293)
at java.net.InetAddress.getLocalHost(InetAddress.java:1469)
... 5 more
Wenn Sie den Befehl > bin/kafka-console-consumer.sh
ausführen, lädt kafka eine ConsoleConsumer
, die versucht, einen Verbraucher mit einer automatisch generierten Verbraucher-ID zu erstellen. Die Art und Weise, wie Kafka die Consumer-ID generiert, besteht darin, den Namen des lokalen Hosts mit ihm zu verknüpfen. Also, in dem Problem war die Tatsache, dass Java konnte nicht die IP-Adresse für den lokalen Host auf dem Open Stack VM ich arbeite mit.
Die Antwort war also, dass die Open Stack-VM den lokalen Hostnamen in kafka
auflöst, was der Name der VM ist. Ich hatte alles in den Kafka- und Zookeeper-Instanzen als kafka1
eingerichtet.
Also, als Java getLocalHost aufruft, versucht es, die IP-Adresse für kafka
zu finden, die ich nicht in meiner / etc / hosts-Datei hatte.
Ich habe einfach einen Eintrag für kafka
in meine / etc / hosts Datei eingefügt und alles hat wunderbar funktioniert !!!
Ich hätte gedacht, dass es in localhost
aufgelöst werden würde, aber es wurde nicht auf den Namen der VM aufgelöst, kafka
.
Als Noplay darauf hinwies, dass Kafka nicht in der Lage war, die richtige IP zu beheben, kann dies beispielsweise auf Ihren EC2-Instanzen in privaten Subnetzen ohne Zuweisung öffentlicher IP-Adressen passieren. Die Lösung fasste zusammen:
%Vor%Was zeigt Ihnen den Host-Namen, so etwas wie ip-10-180-128-217. Dann aktualisiere einfach deine / etc / hosts
%Vor%edit, z.B.
%Vor%Tags und Links apache-kafka apache-zookeeper