wake-up-neo.com

Fehler beim Erstellen des Kafka-Themas: - Replikationsfaktor größer als verfügbare Broker

Ich versuche, ein Kafka-Thema über AdminCommand mit folgendem Code zu erstellen: Source

 ZkClient zkClient = new ZkClient(kafkaHost, 10000, 10000, ZKStringSerializer$.MODULE$);
    AdminUtils.createTopic(zkClient, "pa_reliancepoc_telecom_usageevent", 10, 2, new Properties());

Aber die folgende Ausnahme bekommen

Exception in thread "main" kafka.admin.AdminOperationException: replication factor: 1 larger than available brokers: 0
at kafka.admin.AdminUtils$.assignReplicasToBrokers(AdminUtils.scala:70)
at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:155)

Ich kann das Thema jedoch mit dem Shell-Befehl erstellen.

10
Count

In Ihrem Code,

 AdminUtils.createTopic(zkClient, "pa_reliancepoc_telecom_usageevent", 10, 2, new Properties());

Das vierte Argument ist der Replikationsfaktor. Sie versuchen also, ein Thema mit dem Namen pa_reliancepoc_telecom_usageevent mit Partition count of 10 und replication of 2 zu erstellen. two kafka brokers sollte also beim Erstellen des Themas verfügbar sein. Wenn weniger als zwei verfügbar sind, wird die folgende Ausnahme angezeigt.

Exception in thread "main" kafka.admin.AdminOperationException: replication factor: 1 larger than available brokers: 0
at kafka.admin.AdminUtils$.assignReplicasToBrokers(AdminUtils.scala:70)
at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:155)

Stellen Sie sicher, dass Sie kafka cluster with two broker nodes und die beiden Knoten should be alive while creating the topic. ausführen.

Um kafka im Cluster auszuführen, verweisen Sie auf Schritt 6 in this link

13
Jaya Ananthram

konfigurieren Sie Ihren lokalen Computer so, dass mehrere Broker aktiv sind, falls Sie Ihren replication_factor > 1 behalten möchten. 

Sie können dies tun, indem Sie einfach mehrere Kopien der server.properties-Datei erstellen. z.B 
server-1.properties & server-2.properties 

Sie müssen dann in jeder dieser Dateien andere broker.id & port angeben, um sie eindeutig zu machen.

   config/server-1.properties:
     broker.id=1
     port=9093
     log.dir=/tmp/kafka-logs-1

   config/server-2.properties:
     broker.id=2
     port=9094
     log.dir=/tmp/kafka-logs-2

Starten Sie dann mehrere Instanzen mit folgenden Befehlen

> bin/kafka-server-start.sh config/server-1.properties &
> bin/kafka-server-start.sh config/server-2.properties &

Weitere Informationen finden Sie unter Schritt 6: Einrichten eines Multi-Broker-Clusters

4
user2720864

Bei der Einrichtung mehrerer Broker stand ich vor demselben Problem. 

Der Schritt, den ich vermisst habe, war:

Während der Bearbeitung der Konfigurationsdatei: config/server-1.properties: broker.id = 1 Listener = PLAINTEXT: //: 9093 log.dir =/tmp/kafka-logs-1

sie müssen auch den LOG BASICS-Bereich aktualisieren (siehe unten):

Eine durch Kommas getrennte Liste von Verzeichnissen, in denen Protokolldateien gespeichert werden

log.dirs=/tmp/kafka-logs-1
0
Ananth Joshi