(la sortie date d'il y a presque deux semaines en fait, ce qui est assez ironique pour un cours sur le temps réel...)
Ce cours est le second du parcours data architect ; on y parle surtout d'Apache Kafka et Apache Storm qui sont des outils pour construire des pipelines de gestion de flux de données temps réel.
Profitez de ce post pour poser toutes vos questions !
Dans le chapitre "Déployez et administrer un cluster Kafka", j'ai relevé une petite coquille lors de l'augmentation du taux de réplication d'un topic, il faut lire velib-stations au lieu de velib-partitions après la commande qui modifie le replication-factor.
Rien n'arrive dans la vie... ni comme on le craint, ni comme on l'espère.
Concernant l'activité Google Analytics, j'ai dû changer le paramètre "topology.message.timeout.secs" avec une valeur relativement grande (40000) sinon on obtient une exception "Window duration (length + sliding interval) value xxx is more than topology.message.timeout.secs value 30000" afin de pouvoir gérer une fenêtre glissante d'une heure et afficher un message toutes les 30 secondes. Est-ce que c'est la bonne démarche et est-ce que cela ne nuit pas à l'aspect temps réel de storm ?
Cordialement,
Michel.
Rien n'arrive dans la vie... ni comme on le craint, ni comme on l'espère.
@Michel: chut, ça fait partie des choses à découvrir dans l'activité ! Et non, ça ne nuit pas à l'aspect temps réel, puisqu'on cherche expressément à ne traiter les données que toutes les 30 secondes.
J'ai un problème d'encodage avec le script "velib-monitor-stations.py" pour la partie Kafka.
File "./velib-monitor-stations.py", line 23, in <module>
count_diff, station["address"], contract
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf1' in position 10: ordinal not in range(128)
Je ne suis pas expert en python donc je viens demander de l'aide.
Avant l'erreur j'obtiens tout de même 2 changements d'état de différente rues à Dublin.
J'ai un soucis de compréhension avec l'exercice "Gérez des flottes de vélos comme un·e pro".
Il est dit de modifier le fichier get_stations.py de façon à envoyer des messages dans le topic lorsqu'une station se vide (alors qu'elle ne l'etait pas avant).
Ceci implique garder un état de chaque station dans ce fichier, supposé être le producer, et dont le passage à l'échelle n'est pas possible (ou ne serait pas logique ou cohérent).
J'arrive à lancer le serveur zookeeper par contre quand je veux lancer le serveur kafka j'ai des messages d'erreur.
[2018-04-03 23:02:45,663] FATAL Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer) java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter at kafka.utils.CoreUtils$.urlSafeBase64EncodeNoPadding(CoreUtils.scala:294) at kafka.utils.CoreUtils$.generateUuidAsBase64(CoreUtils.scala:282) at kafka.server.KafkaServer$$anonfun$getOrGenerateClusterId$1.apply(KafkaServer.scala:335) at kafka.server.KafkaServer$$anonfun$getOrGenerateClusterId$1.apply(KafkaServer.scala:335) at scala.Option.getOrElse(Option.scala:120) at kafka.server.KafkaServer.getOrGenerateClusterId(KafkaServer.scala:335) at kafka.server.KafkaServer.startup(KafkaServer.scala:190) at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:39) at kafka.Kafka$.main(Kafka.scala:67) at kafka.Kafka.main(Kafka.scala) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ... 10 more [2018-04-03 23:02:45,790] INFO shutting down (kafka.server.KafkaServer) [2018-04-03 23:02:45,816] INFO Terminate ZkClient event thread. (org.I0Itec.zkclient.ZkEventThread) [2018-04-03 23:02:45,891] INFO Session: 0x1628d4cdb5e0000 closed (org.apache.zookeeper.ZooKeeper) [2018-04-03 23:02:45,911] INFO EventThread shut down for session: 0x1628d4cdb5e0000 (org.apache.zookeeper.ClientCnxn) [2018-04-03 23:02:45,959] INFO shut down completed (kafka.server.KafkaServer) [2018-04-03 23:02:45,970] FATAL Fatal error during KafkaServerStartable startup. Prepare to shutdown (kafka.server.KafkaServerStartable) java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter at kafka.utils.CoreUtils$.urlSafeBase64EncodeNoPadding(CoreUtils.scala:294) at kafka.utils.CoreUtils$.generateUuidAsBase64(CoreUtils.scala:282) at kafka.server.KafkaServer$$anonfun$getOrGenerateClusterId$1.apply(KafkaServer.scala:335) at kafka.server.KafkaServer$$anonfun$getOrGenerateClusterId$1.apply(KafkaServer.scala:335) at scala.Option.getOrElse(Option.scala:120) at kafka.server.KafkaServer.getOrGenerateClusterId(KafkaServer.scala:335) at kafka.server.KafkaServer.startup(KafkaServer.scala:190) at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:39) at kafka.Kafka$.main(Kafka.scala:67) at kafka.Kafka.main(Kafka.scala) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) ... 10 more [2018-04-03 23:02:46,046] INFO shutting down (kafka.server.KafkaServer)
Bonjour à tous! J'ai un souci dans l'installation de kafka: quand je lance le script de zookeeper ça marche car telnet localhost 2181 fonctionne bien. Par contre malgré que j'ai suivi le tutoriel comme indiqué, le serveur kafka ne reponds pas. telnet localhost 9092 ne marcje pas! Pourriez vous m'aider ? quel peut être le problème? Merci d'avance!
Bonjour à tous! J'ai un souci dans l'installation de kafka: quand je lance le script de zookeeper ça marche car telnet localhost 2181 fonctionne bien. Par contre malgré que j'ai suivi le tutoriel comme indiqué, le serveur kafka ne reponds pas. telnet localhost 9092 ne marcje pas! Pourriez vous m'aider ? quel peut être le problème? Merci d'avance!
Bonjour,
Tu as quoi comme erreur lorsque tu essaies de démarrer le serveur kafka ?
Le savant ce n'est pas celui qui a le plus appris mais c'est celui qui a le plus compris.
J'ai un problème de compréhension pour le TP "Gérez des flottes de vélos comme un·e pro" :
Le producer doit émettre des messages uniquement en cas de changement d'état d'une station (vide -> non vide et vice-versa). Donc coté consumer on a que cette information de changement d'état, en supposant que le message passé contienne uniquement les informations sur la station concernée.
Pour répondre à la question "Afficher le nombre de stations vides dans la ville", faut-il se contenter du nombre de stations devenues et restées vides depuis le lancement des scripts, ou faut-il également tenir compte des stations qui étaient déjà vides avant le lancement ? Auquel cas on a besoin de plus d'informations coté consumer et ça complique pas mal les choses.
Juste pour signaler que sur ce cours les corrections sont longues, très longues (2 mois et +).
Sur ce genre de cours possiblement moins populaires, la correction par ses pairs trouve peut-être ses limites?
Sinon rétrospectivement, cours très intéressant et bien fait mais je pense qu'il pourrait être intéressant d'approfondir quelques notions. Je pense notamment à quelques points au niveau des topologies Storm : les jointures/regroupements, l'api Trident et l'utilisation de connexion à des bases noSql pour la reprise en cas de crash.
Petite question sur l'exercice 1 pour afficher le compte des stations vides.
Si on passe à l'échelle sur plusieurs partitions et donc avec plusieurs consumers, le script de chaque consumer va avoir son propre compte de stations vides non ?
Merci beaucoup pour ce cours, j'avais besoin de comprendre les spécificités de Kafka par rapport à RabbitMQ.
Tout d'abord, merci pour cet excellent cours, je me régale.
Je n'ai pas réussi à lancer kafka-manager (désormais CMAC) avec la commande proposée. Après un peu de recherche et pas mal d'essai, j'ai réussi avec la commande suivante:
Bonjour à tous, J'avais mis ce cours dans ma liste mais je constate qu'il a été supprimé, savez-vous pourquoi ?
Merci par avance, Guilhem
[Cours] Gérez des flux de données temps réel
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le savant ce n'est pas celui qui a le plus appris mais c'est celui qui a le plus compris.