Académique Documents
Professionnel Documents
Culture Documents
BIG DATA
Data ingestion
Quoi ?
Qui ?
Ce processus est essentiel pour les entreprises et les organisations qui souhaitent tirer des
enseignements et des informations utiles à partir de grandes quantités de données.
Les professionnels des données, les ingénieurs en données, les scientifiques des données et
les équipes informatiques sont généralement responsables de la mise en œuvre de la Data
Ingestion.
Où ?
La Data Ingestion peut se produire à partir de diverses sources, y compris des bases de
données externes, des fichiers plats, des flux de capteurs, des API web, etc. Les données peuvent
être ingérées dans des entrepôts de données, des data lakes ou d'autres systèmes de stockage.
Comment ?
Cette solution permet de prendre des décisions en temps réel en s’appuyant sur des
données de dernière fraicheur. Elle est utile lorsque les données collectées sont extrêmement
urgentes.
Par exemple :
Lorsqu’une entreprise n’a pas une réelle nécessité d’accéder à des informations en temps
réel, elle peut programmer leur envoi et leur centralisation à intervalles réguliers. Cette approche
est bénéfique pour les processus reproductibles.
Par exemple :
- Les organisations qui doivent générer des rapports et tableaux de bords à intervalles
réguliers (quotidien, hebdomadaire, etc.).
L’architecture Lambda permet de sélectionner des types de données à recueillir par lots et
tout en mettant en place une centralisation et exportation en temps réel pour la data sensible au
facteur temps.
L’architecture Kappa a le même objectif mais au lieu que le flux et les lots soient dissociés
en deux couches distinctes, celles-ci sont fusionnées dans un souci d’économie de la charge
opérationnel. Cependant, cette solution d’ingestion n’a qu’une fonction de traitement et n’intègre
pas la fonction de stockage.
Pourquoi ?
- Elle permet concrètement d’extraire des informations localisées dans des bases de
données diverses qui ne communiquent pas forcément entre elles.
- Les entreprises deviennent plus agiles et peuvent optimiser leur processus de
décision et ainsi booster leurs performances à plusieurs niveaux (commercial,
marketing, financier, organisationnel, managérial, etc.).
Apache Flume
Quoi ?
Un outil open-source développé en 2009 par cloudera, il facilite la collecte, l'agrégation et
le déplacement efficace de grands volumes de données (logs, événements, etc.) depuis diverses
sources vers un ou plusieurs systèmes de stockage centralisés, tels que Apache Hadoop HDFS.
Quand ?
Flume suit généralement une architecture de type agent, où chaque agent est responsable
de la collecte et du transfert de données. Les agents peuvent être configurés pour former des flux
de données.
Source : Représente l'origine des données à collecter. Les plus courants sont les suivantes :
Avro : cela permet de communiquer entre les différents agents de Flume Apache.
Syslog (TCP ou UDP) : l’idée est de capter les événements d’un serveur syslog.
La source Taildir : elle permet de collecter des données à partir d’un répertoire et de les
diffuser vers les agents Flume.
La source Netcat : elle permet d’écouter un socket TCP/IP afin de recevoir des données
entrantes.
Memory Channel : il permet de stocker les données en mémoire vive, facilitant ainsi une
plus grande vitesse de traitement, mais avec une capacité de stockage limitée.
File Channel : il permet de stocker les événements dans des fichiers sur disque, ce qui a
l’avantage de pouvoir stocker un volume important de données, mais avec parfois une lenteur de
traitement.
Kafka Channel : il permet de stocker des données dans un cluster Kafka, facilitant ainsi
une plus grande scalabilité et une haute disponibilité des logs collectés.
Sink : Représente la destination des données collectées. Les événements peuvent alors être
poussés vers HDFS, IRC, HBase, ElasticSearch, File (ou fichier local). Il est aussi possible
d’utiliser Avro pour faciliter la communication avec un autre agent.
HDFS Sink : il permet d’écrire les données collectées dans le système de fichiers distribué
HDFS.
JDBC Sink : il permet d’écrire les données collectées dans une base de données
relationnelle via JDBC (Java Database Connectivity).
Kafka Sink : il permet d’écrire les logs récupérés dans un cluster Kafka.
Installation du Flume
Cette configuration Flume spécifie une source Flume qui utilise la commande tail pour
capturer en continu les nouveaux événements provenant du fichier /tmp/events. Ces événements
sont ensuite transmis à travers le canal de type mémoire pour mettre en mémoire tampon les
événements avant de les écrire dans le système de fichiers distribué HDFS. Les événements sont
écrits dans des fichiers avec un préfixe spécifique, et les fichiers sont arrondis toutes les 10
minutes.
Génération des messages log en utilisant des mots aléatoires
Installer le package wamerican :
Afficher les dernières lignes du fichier "words" qui se trouve dans le répertoire
"/usr/share/dict/ ».
Le but de cette commande est de démarrer l'agent Flume avec le fichier de configuration
spécifié et la configuration Hadoop. L'agent Flume fait partie du système Apache Flume, qui est
utilisé pour collecter, agréger et déplacer efficacement de grandes quantités de données de
journal.
Configurer Flume pour ingérer des journaux à partir de serveurs Web. Cela peut inclure
des journaux d'accès, des journaux d'erreurs, ou tout autre journal pertinent généré par les
serveurs Web.
Utiliser Flume pour collecter et traiter des données à partir de dispositifs IoT. Il peut gérer
de grands volumes de données en continu générées par des ingescapteurs, des actionneurs et
d'autres dispositifs IoT.
Exercise 2: Data Ingestion using Apache Sqoop
Exploration Apache Sqoop
Quoi ?
Sqoop est l’abréviation de « SQL to Hadoop », qui a pour objectif de permettre une
meilleure cohabitation des systèmes traditionnels de type SGBDs avec la plateforme Hadoop. On
peut utiliser Sqoop pour importer des données des SGBDR tels que MySQL, Oracle, SQL Server
ou Teradata au HDFS, transformer les données dans Hadoop via le MapReduce ou un autre
modèle de calcul, et les exporter en retour dans le SGBDR. Lorsque vous exportez les données
du SGBDR pour Hadoop, vous pouvez les stocker sur Hive, HBase ou directement sur le HDFS.
Qui ?
Apache Sqoop est utilisé par de nombreuses organisations, en particulier celles qui traitent
de grandes quantités de données et qui ont besoin de transférer ces données entre des bases de
données relationnelles et des systèmes de stockage distribués tels que Hadoop
Comment ?
Apache Sqoop utilise des commandes en ligne pour importer/exporter des données. Il se
connecte aux bases de données via JDBC, transfère les données en utilisant des map-reduce jobs,
et propose des options pour filtrer et transformer les données lors du transfert.
Pourquoi ?
Apache Sqoop simplifie le transfert de données entre des bases de données SQL et
Hadoop, facilitant ainsi l'intégration des données stockées dans des bases de données
relationnelles avec les capacités de stockage et de traitement massif de données de Hadoop.
Installation Sqoop
Cette commande télécharge la distribution binaire Apache Sqoop 1.4.7 avec le support de
Hadoop 2.6.0.
Ajouter les variables d'environnement nécessaires pour Sqoop dans le fichier ~/.bashrc.
Cela garantit que Sqoop est accessible depuis n'importe quel emplacement dans notre système.
Installation MySQL
Installer MySQL :
Démarrer le service MySQL :
Pourquoi (Why) :
Le streaming de données permet de traiter les données en temps réel, offrant une réactivité
immédiate aux événements et un traitement continu des informations.
Comment (How) :
Le streaming de données peut être mis en œuvre dans divers contextes, tels que l'Internet
des objets (IoT), l'analyse en temps réel, la surveillance de l'activité utilisateur, etc.
Quand (When) :
Le streaming de données est utilisé lorsque les analyses en temps réel sont cruciales,
nécessitant des réponses immédiates aux événements ou des décisions basées sur des données en
constante évolution.
Apache kafka
Quoi (What) :
Apache Kafka est une plateforme de streaming de données open source. À l’origine, elle
fut développée en interne par LinkedIn en guise de queue de messagerie. Toutefois, cet outil
largement évolué et ses cas d’usage se sont multipliés.
Pourquoi (Why) :
Il faut savoir que Kafka est distribué. Cela signifie que ses capacités sont élastiques. Il
suffit d’ajouter des noeuds, c’est-à-dire des serveurs, à un cluster pour l’étendre.
Une autre particularité de Kafka est sa faible latence. Cela signifie qu’elle peut prendre en
charge le traitement de nombreuses données en temps réel.
Comment (How) :
Broker Kafka : Un broker Kafka est un serveur individuel qui stocke les données et les sert
aux producteurs et aux consommateurs. Plusieurs brokers forment un cluster Kafka.
Topic : Un topic est une catégorie ou un canal de flux de données. Les producteurs publient
des messages dans un topic, et les consommateurs s'abonnent à un ou plusieurs topics pour traiter
ces messages.
Producer : Un producteur Kafka est une entité qui publie des messages dans un topic. Les
producteurs sont responsables de la génération des données.
Consumer : Un consommateur Kafka est une entité qui s'abonne à un ou plusieurs topics
pour traiter les messages publiés. Les consommateurs peuvent être organisés en groupes de
consommateurs.
Partition : Les topics peuvent être divisés en partitions. Chaque partition est un ordre
séquentiel et linéaire de messages. Les partitions permettent une distribution parallèle des
données.
Zookeeper : Zookeeper est utilisé par Kafka pour la gestion de cluster, la coordination et la
gestion des tâches réparties.
Producer API : Une API pour la publication de messages dans les topics.
Consumer API : Une API pour la souscription et le traitement des messages à partir des
topics.
Kafka Connect : Kafka Connect est un framework pour connecter Kafka à d'autres
systèmes de stockage et de traitement de données.
Kafka Streams : Kafka Streams est une bibliothèque Java pour la création d'applications de
traitement de flux directement sur la plateforme Kafka.