web-dev-qa-db-fra.com

Consommateur ne recevant pas de messages, console kafka, nouvelle API du consommateur, Kafka 0.9

Je fais le Kafka Quickstart pour Kafka 0.9.0.0.

J'ai l'écoute de zookeeper à localhost:2181 parce que j'ai couru

bin/zookeeper-server-start.sh config/zookeeper.properties

J'ai un seul courtier qui écoute à localhost:9092 parce que j'ai couru

bin/kafka-server-start.sh config/server.properties

J'ai un producteur postant sur le sujet "test" parce que j'ai couru

bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
yello
is this thing on?
let's try another
gimme more

Lorsque j’exécute l’ancien consommateur d’API, il fonctionne en exécutant

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning

Cependant, lorsque je lance le nouveau consommateur d'API, je ne reçois rien quand je cours

bin/kafka-console-consumer.sh --new-consumer --topic test --from-beginning \
    --bootstrap-server localhost:9092

Est-il possible de s'abonner à un sujet à partir du consommateur de console en utilisant la nouvelle API? Comment puis-je le réparer?

21
EthanP

Je suis sous MAC Je suis confronté au même problème de consommateur de console ne consommant aucun message lorsque la commande est utilisée

kafka-console-consumer --bootstrap-server localhost:9095 --from-beginning --topic my-replicated-topic

Mais quand j'ai essayé avec 

kafka-console-consumer --bootstrap-server localhost:9095 --from-beginning --topic my-replicated-topic --partition 0

Il énumère avec joie les messages envoyés. Est-ce un bug dans Kafka 1.10.11?

17

Pour moi, la solution décrite dans ce fil a fonctionné - https://stackoverflow.com/a/51540528/7568227

Vérifier si

offsets.topic.replication.factor

(ou probablement d’autres paramètres de configuration liés à la réplication) n’est pas supérieur au nombre de courtiers. C'était le problème dans mon cas.

Il n'y avait plus besoin d'utiliser --partition 0 après ce correctif.

Sinon, je vous recommande de suivre la procédure de débogage décrite dans le fil de discussion mentionné.

3
miko

Je viens de rencontrer ce problème et la solution consistait à supprimer /brokers dans zookeeper et à redémarrer les nœuds kafka.

bin/zookeeper-Shell <zk-Host>:2181

et alors 

rmr /brokers

Je ne sais pas pourquoi cela résout le problème. 

Lorsque j'ai activé la journalisation de débogage, j'ai vu ce message d'erreur maintes et maintes fois chez le consommateur:

2017-07-07 01:20:12 DEBUG AbstractCoordinator:548 - Sending GroupCoordinator request for group test to broker xx.xx.xx.xx:9092 (id: 1007 rack: null) 2017-07-07 01:20:12 DEBUG AbstractCoordinator:559 - Received GroupCoordinator response ClientResponse(receivedTimeMs=1499390412231, latencyMs=84, disconnected=false, requestHeader={api_key=10,api_version=0,correlation_id=13,client_id=consumer-1}, responseBody={error_code=15,coordinator={node_id=-1,Host=,port=-1}}) for group test 2017-07-07 01:20:12 DEBUG AbstractCoordinator:581 - Group coordinator lookup for group test failed: The group coordinator is not available. 2017-07-07 01:20:12 DEBUG AbstractCoordinator:215 - Coordinator discovery failed for group test, refreshing metadata

3
Liz Bennett

Votre hôte local est le foo here . Si vous remplacez le mot localhost par le nom d’hôte actuel, cela devrait fonctionner.

comme ça:

producteur

./bin/kafka-console-producer.sh --broker-list \
sandbox-hdp.hortonworks.com:9092 --topic test

consommateur:

./bin/kafka-console-consumer.sh --topic test --from-beginning \    
--bootstrap-server bin/kafka-console-consumer.sh --new-consumer \
--topic test --from-beginning \
--bootstrap-server localhost:9092
3
Loebre

Ce problème a également un impact sur l’ingestion des données du kafka à l’aide de Flume et sur l’enfoncement des données vers HDFS.

Pour résoudre le problème ci-dessus:

  1. Arrêtez les courtiers Kafka
  2. Connectez-vous au cluster zookeeper et supprimez le nœud z/brokers
  3. Redémarrer les courtiers kafka

Il n'y a aucun problème en ce qui concerne la version du client kafka et la version de scala que nous utilisons le cluster. Zookeeper peut avoir des informations erronées sur les hôtes de courtier.

Pour vérifier l'action:

Créer un sujet dans kafka.

$ kafka-console-consumer --bootstrap-server slavenode01.cdh.com:9092 --topic rkkrishnaa3210 --from-beginning

Ouvrez un canal de producteur et envoyez-lui des messages.

$ kafka-console-producer --broker-list slavenode03.cdh.com:9092 --topic rkkrishnaa3210

Ouvrez un canal consommateur pour utiliser le message d'un sujet spécifique.

$ kafka-console-consumer --bootstrap-server slavenode01.cdh.com:9092 --topic rkkrishnaa3210 --from-beginning

Pour tester cela depuis le canal:

Config agent de flume:

rk.sources  = source1
rk.channels = channel1
rk.sinks = sink1

rk.sources.source1.type = org.Apache.flume.source.kafka.KafkaSource
rk.sources.source1.zookeeperConnect = ip-20-0-21-161.ec2.internal:2181
rk.sources.source1.topic = rkkrishnaa321
rk.sources.source1.groupId = flume1
rk.sources.source1.channels = channel1
rk.sources.source1.interceptors = i1
rk.sources.source1.interceptors.i1.type = timestamp
rk.sources.source1.kafka.consumer.timeout.ms = 100
rk.channels.channel1.type = memory
rk.channels.channel1.capacity = 10000
rk.channels.channel1.transactionCapacity = 1000
rk.sinks.sink1.type = hdfs
rk.sinks.sink1.hdfs.path = /user/ce_rk/kafka/%{topic}/%y-%m-%d
rk.sinks.sink1.hdfs.rollInterval = 5
rk.sinks.sink1.hdfs.rollSize = 0
rk.sinks.sink1.hdfs.rollCount = 0
rk.sinks.sink1.hdfs.fileType = DataStream
rk.sinks.sink1.channel = channel1

Exécuter l'agent de canal:

flume-ng agent --conf . -f flume.conf -Dflume.root.logger=DEBUG,console -n rk

Observez les journaux du consommateur que le message de la rubrique est écrit en HDFS.

18/02/16 05:21:14 INFO internals.AbstractCoordinator: Successfully joined group flume1 with generation 1
18/02/16 05:21:14 INFO internals.ConsumerCoordinator: Setting newly assigned partitions [rkkrishnaa3210-0] for group flume1
18/02/16 05:21:14 INFO kafka.SourceRebalanceListener: topic rkkrishnaa3210 - partition 0 assigned.
18/02/16 05:21:14 INFO kafka.KafkaSource: Kafka source source1 started.
18/02/16 05:21:14 INFO instrumentation.MonitoredCounterGroup: Monitored counter group for type: SOURCE, name: source1: Successfully registered new MBean.
18/02/16 05:21:14 INFO instrumentation.MonitoredCounterGroup: Component type: SOURCE, name: source1 started
18/02/16 05:21:41 INFO hdfs.HDFSDataStream: Serializer = TEXT, UseRawLocalFileSystem = false
18/02/16 05:21:42 INFO hdfs.BucketWriter: Creating /user/ce_rk/kafka/rkkrishnaa3210/18-02-16/FlumeData.1518758501920.tmp
18/02/16 05:21:48 INFO hdfs.BucketWriter: Closing /user/ce_rk/kafka/rkkrishnaa3210/18-02-16/FlumeData.1518758501920.tmp
18/02/16 05:21:48 INFO hdfs.BucketWriter: Renaming /user/ce_rk/kafka/rkkrishnaa3210/18-02-16/FlumeData.1518758501920.tmp to /user/ce_rk/kafka/rkkrishnaa3210/18-02-16/FlumeData.1518758501920
18/02/16 05:21:48 INFO hdfs.HDFSEventSink: Writer callback called.
2
Radhakrishnan Rk

Pouvez-vous s'il vous plaît essayer comme ça:

bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic my-replicated-topic
1
Haritha Yalavarthi

J'ai eu le même problème, maintenant j'ai compris.

Lorsque vous utilisez --zookeeper, il est censé être fourni avec l'adresse de zookeeper en tant que paramètre.

Lorsque vous utilisez --bootstrap-server, il est censé être fourni avec l'adresse du courtier en paramètre.

1
Jerry Zhang

Dans mon cas, cela n’a pas fonctionné en utilisant l’une ou l’autre des approches, puis j’ai également augmenté le niveau de journalisation àDEBUGà config/log4j.properties, a lancé le consommateur de console.

./bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --from-beginning --topic MY_TOPIC

Puis obtenu le journal ci-dessous

[2018-03-11 12:11:25,711] DEBUG [MetadataCache brokerId=10] Error while fetching metadata for MY_TOPIC-3: leader not available (kafka.server.MetadataCache)

Le point ici est que j'ai deux noeuds kafka mais l'un est en panne, pour une raison quelconque, le consommateur de kafka-console ne consommera pas s'il existe une partition non disponible car le noeud est en panne (la partition 3 dans ce cas). Cela n'arrive pas dans ma candidature.

Les solutions possibles sont

  • Démarrage des courtiers en aval
  • Supprimez le sujet et créez-le à nouveau de manière à ce que toutes les partitions soient placées sur le nœud du courtier en ligne.
0
deFreitas

Exécutez la commande ci-dessous à partir de bin:

./kafka-console-consumer.sh --topic test --from-beginning --bootstrap-server localhost:9092

"test" est le nom du sujet

0
Mithun Mathew

Utilisez ceci: bin/kafka-console-consumer.sh --hôte-serveur-de-démarrage-serveur: 9092 - test d'activation --de début

Remarque: Supprimez "--new-consumer" de votre commande. 

Pour référence, voir ici: https://kafka.Apache.org/quickstart

0
Apurva Gupta

Je rencontrais le même problème sur mon Mac… .. J'ai vérifié les journaux et trouvé l'erreur suivante.

Number of alive brokers '1' does not meet the required replication factor '3' for the offsets topic (configured via 'offsets.topic.replication.factor'). 
This error can be ignored if the cluster is starting up and not all brokers are up yet.

Cela peut être corrigé en modifiant le facteur de réplication en 1. Ajoutez la ligne suivante dans server.properties et redémarrez Kafka/Zookeeper.

offsets.topic.replication.factor=1
0
Ankit Gajra