Ingénieurs de données : projet d'ingénierie de données étape par étape

Nov 28 2022
si vous envisagez d'améliorer vos compétences et de vous impliquer dans des projets techniques lourds, je vous ai eu, cet article est pour vous, les prochains également, je vais mettre en évidence le meilleur pour vous, comme je le mentionne, toujours, la bonne connaissance est distribuée ici . Dans cet article, nous allons expliquer comment créer une pile de données à l'aide de l'outil de gestion de flux de travail apache airflow, créer des tableaux de bord avec Dash plottly, collecter des métriques avec Statsd et visualiser les performances à l'aide de Prometheus et Grafana.

si vous envisagez d'améliorer vos compétences et de vous impliquer dans des projets techniques lourds, je vous ai eu, cet article est pour vous, les prochains également, je vais mettre en évidence le meilleur pour vous, comme je le mentionne, toujours, la bonne connaissance est distribuée ici .

Figure 1 : architecture du projet

Dans cet article, nous allons expliquer comment créer une pile de données à l'aide de l'outil de gestion de flux de travail apache airflow , créer des tableaux de bord avec Dash plottly , collecter des métriques avec Statsd et visualiser les performances à l'aide de Prometheus et Grafana .

Toutes les tâches spécifiées ci-dessus progressent pour être connectées ensemble à l'aide de docker compose . certains d'entre vous n'ont pas eu la chance de travailler avec, alors prenons une brève définition de celui-ci.

Figure 2 : Docker composer

Imaginez que vous travaillez avec de nombreux conteneurs en même temps, chacun d'eux a son propre travail spécifique, allez-vous gérer chacun d'eux séparément ? BIEN SÛR QUE NON ! . Docker Compose est un outil qui permet de surmonter ce problème et de gérer facilement plusieurs conteneurs à la fois.

Je peux vous voir vous demander pourquoi j'ai commencé l'article en parlant de docker compose , mais ça va, je vais vous expliquer pourquoi. Je veux que vous compreniez qu'il est obligatoire de réfléchir aux fondements de chaque projet informatique avant de commencer à creuser plus profondément. Docker compose va nous permettre de démarrer tous les services nécessaires à notre projet.

Jetons un coup d'œil à notre fichier docker compose ( docker-compose-LocalExecutor.yml ) :

chaque fichier docker-compose a des attributs que nous devons comprendre :

  • version : docker compose la version
  • image : image docker à extraire du hub docker
  • depend_on : ici, nous devons mentionner quels services sont liés au service actuel, par exemple apache airflow a besoin de Postgres et Mysql pour stocker les métadonnées des dags
  • environnement : ici on définit les variables d'environnement du service, par exemple POSTGRES_USER=airflow va être utilisé au démarrage du service.
  • command : la première commande bash dont vous avez besoin pour être exécutée à chaque démarrage du service
  • volumes : l'emplacement à l'intérieur de votre conteneur qui sera monté sur votre système de fichiers, par exemple les données transformées des pipelines seront stockées dans un lieu de stockage persistant
  • ports : il s'agit du média à partir duquel vos conteneurs utiliseraient pour communiquer avec d'autres services, par exemple, les données vont être ingérées dans Statsd à partir du flux d'air via le port 8125 en utilisant le protocole udp (vérifiez la capture d'écran ci-dessous).
  • Démarrez les services de base de données :
  • Figure 3 : service mysql
    Figure 4 : serveur web airflow

    3.Démarrez les statistiques :

    Figure 5 : Service statsd

    4.Démarrez Prometheus et Grafana :

    Figure 6 : Service Prometheus
    Figure 7 : Service Grafana

    Ainsi, comme nous pouvons le voir, toutes ces définitions sont écrites sur le même fichier et elles seront lancées toutes ensemble avec une simple commande afin d'atteindre l'objectif du projet.

    Le projet se décompose en 3 grandes étapes :

    1. grattage des données et automatisez-le à l'aide d'Apache airflow .
    2. tableaux de bord à l'aide de Dash plotly .
    3. le surveiller à l'aide de 3 outils : Statsd , Prometheus , Grafana .
    • la source de données :https://www.fahrrad.de/
    Figure 8 : Capture d'écran du site Fahrrad.de

    on va extraire :

    • le nom de la marque
    • la catégorie
    • le nom du modèle
    • le prix
    • la photo du vélo

    Les scripts de scraping seront automatisés à l'aide de l'outil le plus puissant apache airflow, mais si vous ne l'avez jamais utilisé auparavant, je vais donner un bref aperçu de l'outil.

    Apache airflow est un outil de gestion de flux de travail qui a beaucoup d'opérateurs qui peuvent aider n'importe quel ingénieur de données à concevoir et orchestrer les tâches des projets scientifiques de big data, par exemple automatiser les scripts de collecte de données. les opérateurs utilisés dans ce projet sont :

    • PythonOperator : pour le script de scraping web
    • BashOperator : pour définir les tâches d'administration Linux
    • EmailOperator : pour envoyer des e-mails lorsque le pipeline est terminé

    le Dag est une séquence de tâches et chaque tâche est définie à l'aide d'un opérateur

    la tâche doit avoir une place définie et ordonnée (t1 >> t2 : la tâche 1 doit être exécutée avant la tâche 2 )

    Figure 9 : capture d'écran du pipeline

    Après avoir collecté des données à partir de la source (le site Web en utilisant la méthode de grattage), il est maintenant temps d'en tirer des informations, c'est pourquoi nous avons construit un tableau de bord interactif à l'aide de Dash plotly .

    Dash plotly : c'est un framework pour écrire des applications web interactives, écrites au-dessus de Flask, Plotly. js et réagir. js.

    Figure 10 : tableau de bord pour visualiser les données

    En ce moment, faisons du personnel sophistiqué, pendant que le travail est en cours d'exécution, il générera des métriques qui doivent être surveillées, ces métriques seront poussées du flux d'air via le port 8125 vers Statsd en utilisant le protocole udp (vous pouvez vérifier sur le fichier de composition docker ), les données de métriques ne peuvent pas être affichées dans une interface organisée si nous n'utilisons que statsd , nous nous appuierons donc sur Prometheus et Grafana pour obtenir ce que nous recherchons.

    Figure 11 : métriques dans Statsd
    Figure 12 : métriques affichées dans Prometheus
    Figure 13 : Tableau de bord Grafana

    l'ensemble du processus se fait de cette façon :

    Figure 14 : surveillance du débit d'air

    Vidéo du projet :

    Conclusion :

    Dans cet article, nous avons construit une pile de données complète : en commençant par collecter des données à l'aide d'un script python, en passant à la création d'un tableau de bord pour en extraire des informations utiles, en surveillant également le pipeline de données et en observant les performances des différentes tâches. J'espère que vous avez apprécié la lecture de mon article et n'hésitez pas à me poser n'importe quelle question et j'ai hâte d'entendre vos idées sur le prochain article.

    Dépôt GIT :

    https://github.com/chiheb08/data_enginnering_project