web-dev-qa-db-fra.com

Erreur lors de la création du sujet Kafka: - facteur de réplication supérieur à celui des courtiers disponibles

J'essaie de créer un sujet kafka via AdminCommand en utilisant le code ci-dessous Source

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

Mais obtenir l'exception ci-dessous

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)

Cependant, je suis capable de créer le sujet en utilisant la commande Shell.

10
Count

Dans votre code,

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

Le quatrième argument est le facteur de réplication. Vous essayez donc de créer une rubrique avec le nom pa_reliancepoc_telecom_usageevent avec la partition count of 10 et replication of 2. Donc, two kafka brokers devrait être disponible lors de la création du sujet. Si moins de deux sont disponibles, vous obtiendrez l'exception suivante.

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)

Assurez-vous d’exécuter kafka cluster with two broker nodes et les deux nœuds should be alive while creating the topic..

Pour exécuter kafka en cluster, reportez-vous à l'étape 6 de ce lien

13
Jaya Ananthram

configurez votre ordinateur local pour que plusieurs courtiers soient opérationnels si vous décidez de conserver votre replication_factor > 1

Vous pouvez le faire simplement en ayant plusieurs copies du fichier server.properties. par exemple 
server-1.properties & server-2.properties 

Vous devez ensuite spécifier différents broker.id & port dans chacun de ces fichiers pour les rendre uniques.

   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

Et puis démarrez plusieurs instances avec les commandes suivantes

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

Pour plus de détails, consultez Étape 6: Configuration d’un cluster multi-courtiers

4
user2720864

J'ai rencontré le même problème lors de la mise en place de plusieurs courtiers. 

L'étape qui me manquait était:

Lors de l'édition du fichier de configuration: config/server-1.properties: broker.id = 1 listeners = PLAINTEXT: //: 9093 log.dir =/tmp/kafka-logs-1

il faut également mettre à jour la section LOG BASICS (voir ci-dessous):

Une liste séparée par des virgules de répertoires sous lesquels stocker les fichiers journaux

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