Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Cours] Gérez des flux de données temps réel

Team OC 12 juin 2017 à 16:14:32

(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 !

Temps-réllement vôtre,

Régis
  • Partager sur Facebook
  • Partager sur Twitter
1 février 2018 à 10:15:33

Bonjour.

Petit feedback.

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.

  • Partager sur Facebook
  • Partager sur Twitter
Rien n'arrive dans la vie... ni comme on le craint, ni comme on l'espère.
Team OC 1 février 2018 à 11:34:21

Merci beaucoup pour ce retour, Michel, nous corrigeons de suite.
  • Partager sur Facebook
  • Partager sur Twitter
6 février 2018 à 12:39:12

Bonjour.

J'ai terminé le cours qui est de bonne facture !

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.

  • Partager sur Facebook
  • Partager sur Twitter
Rien n'arrive dans la vie... ni comme on le craint, ni comme on l'espère.
Team OC 6 février 2018 à 16:06:25

@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.
  • Partager sur Facebook
  • Partager sur Twitter
10 mars 2018 à 14:36:12

Bonjour,

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.

Tristan.

-
Edité par Tristan A. 10 mars 2018 à 14:36:44

  • Partager sur Facebook
  • Partager sur Twitter
Team OC 11 mars 2018 à 19:09:56

@Tristan A.: quelle version de Python utilisez-vous ? (python --version) Il faut une version 3 ou supérieure.
  • Partager sur Facebook
  • Partager sur Twitter
30 mars 2018 à 12:03:53

Hello,

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'ai l'impression que cela va à l'encontre du concept même de l'utilisation de la file de message, comme expliqué dans le cour ici https://openclassrooms.com/courses/gerez-des-flux-de-donnees-temps-reel/creez-votre-premiere-application-avec-kafka#/id/r-4477813

L'archi qui me parait la plus pratique serait:

- Un producer qui feed le topic velib-stations (exacte implem de ce fichier get_stations.py)

- Un consumer de "velib-stations" qui examinera l'etat des stations et feed le topic "empty-station" 

- Un consumer de "empty-station" qui traitera les messages de sations vides.

Qu'en pensez vous (j'ai peut-etre très mal compris la chose)?

  • Partager sur Facebook
  • Partager sur Twitter
3 avril 2018 à 23:10:58

.

-
Edité par kiki604 6 avril 2018 à 9:42:25

  • Partager sur Facebook
  • Partager sur Twitter
6 avril 2018 à 9:53:59

Bonjour

pour les utilisateurs sous windows , les liens ne sont pas les mêmes . Ce serait bien de le préciser dans le cours.

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

$ ./bin/windows/zookeeper-server-start.bat ./config/zookeeper.properties

De plus

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)

-
Edité par kiki604 6 avril 2018 à 10:04:01

  • Partager sur Facebook
  • Partager sur Twitter
10 avril 2018 à 14:53:55

Bonjour, 

J'arrive à bien faire fonctionner tous les scripts.

Mais je comprends pas la ligne :

 count_diff = available_bike_stands - city_stations[station_number]

Pour moi :available_bike_stands = attaches velib libre à l'instant t 

Je ne comprends pas ce qu'est city_stations[station_number] , c'es la même variable mais à l'instant t-1 ? et comment city_stations est-il construit?

Pourriez-vous donner d'avantage d'explications sur le calcul de count_diff ?

Merci d'avance,

Anne-Lise

  • Partager sur Facebook
  • Partager sur Twitter
8 décembre 2018 à 17:28:53

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!
  • Partager sur Facebook
  • Partager sur Twitter
10 décembre 2018 à 21:54:19

Ardjouma ElohSIRIBIE a écrit:

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 ?

  • Partager sur Facebook
  • Partager sur Twitter
Le savant ce n'est pas celui qui a le plus appris mais c'est celui qui a le plus compris.
11 janvier 2019 à 21:55:53

Bonjour !

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.

Merci de votre éclaircissement,

Cdlt,

  • Partager sur Facebook
  • Partager sur Twitter
15 janvier 2019 à 18:06:15

Bonjour Thomas.

La réponse est "il faut se contenter du nombre de stations devenues et restées vides depuis le lancement des scripts"

Cordialement,

Michel.

  • Partager sur Facebook
  • Partager sur Twitter
Rien n'arrive dans la vie... ni comme on le craint, ni comme on l'espère.

[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é.
  • Editeur
  • Markdown