NoBrokersAvailable: NoBrokersAvailable-Kafka Erreur
j'ai déjà commencé à apprendre Kafka. Essayez les opérations de base sur elle. J'ai coincé sur un point qui, à propos de la " Courtiers.
Mon kafka est en marche, mais lorsque je veux créer une partition.
from kafka import TopicPartition
(ERROR THERE) consumer = KafkaConsumer(bootstrap_servers='localhost:1234')
consumer.assign([TopicPartition('foobar', 2)])
msg = next(consumer)
traceback (most recent call last):
File "", line 1, in
Le fichier "/usr/local/lib/python2.7/dist-packages/kafka/consumer/group.py" de ligne, 284, dans init
auto._client = KafkaClient(paramètres=auto._metrics, **la maîtrise de soi.config)
Le fichier "/usr/local/lib/python2.7/dist-packages/kafka/client_async.py", ligne 202, dans init
auto.config['api_version'] = self.check_version(délai d'expiration=check_timeout)
Le fichier "/usr/local/lib/python2.7/dist-packages/kafka/client_async.py" de ligne, 791, dans check_version
déclencher des Erreurs.NoBrokersAvailable()
kafka.erreurs.NoBrokersAvailable: NoBrokersAvailable
- Étapes pour créer un Kafka pipeline de Données. Suivez le lien ci-dessous. stackoverflow.com/questions/35689238/...
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas créer des partitions à l'intérieur d'un consommateur. Les Partitions sont créées lorsque vous créez un sujet. Par exemple, à l'aide outil de ligne de commande:
Cela crée une nouvelle rubrique "myNewTopic" avec 10 partitions (numérotées de 0 à 9) et le facteur de réplication 3. (voir http://docs.confluent.io/3.0.0/kafka/post-deployment.html#admin-operations et https://kafka.apache.org/documentation.html#quickstart_createtopic)
Au sein de votre consommation, si vous appelez
assign()
, il signifie vous voulez consommer la partition correspondante et cette partition doit exister déjà.Il semble que vous voulez commencer à consommer des messages au lieu de créer des partitions. Néanmoins, pouvez - vous atteindre kafka sur le port 1234? 9092 est le kafkas port par défaut peut-être vous pouvez essayer celui-ci. Si vous avez trouvé le bon port, mais votre demande toujours produit des erreurs, vous pouvez essayer d'utiliser une console de consommateurs pour tester votre configuration:
bin/kafka-console-producer.sh --broker-list localhost:<yourportnumber> --topic foobar
La console de consommation fait partie de la norme kafka distribution. Peut-être que vous avez un peu plus près de la source du problème.
Ne sais pas si cette réponse est toujours d'actualité mais récemment résolu ce même problème dans une VBox VM courtier qui n'est pas accessible à partir de l'hôte de Windows OS.
Puisque vous avez mentionné bootsrap_servers dans KafkaConsumer, je suppose que vous êtes en utilisant au moins kafka 0.10.0.0
S'il vous plaît regardez pour les
advertised.listeners
propriété dans le serveur.les propriétés de fichier et mettre àPLAINTEXT://localhost:9092
ouPLAINTEXT://<broker_ip>:9092
Mais avant que assurez-vous que votre courtier est accessible à partir de l'environnement où le consommateur est en cours d'exécution (en faisant
ping localhost
).Aussi, vous devez redémarrer l'kafka-serveur et le consommateur/producteur (tout ce qui est en cours d'exécution) et essayez d'envoyer/recevoir.
Par exemple, si vous exécutez une machine virtuelle, vous pouvez utiliser de l'Hôte uniquement adaptateur pour le courtier accessible à partir de la machine hôte
REMARQUE: Cette configuration fonctionne pour Kafka Serveur >= 0.10.X.X, mais pas pour 0.8.2.X. Vous n'avez pas vérifié pour 0.9.0.X
J'ai également eu la même erreur lors de kafka en streaming. Ci-dessous un exemple résolu mon erreur. Nous avons besoin de définir la version de l'API dans KafkaProducer.