Académique Documents
Professionnel Documents
Culture Documents
APACHE
SQOOP
Réalisé par :
Encadré par :
M. Chiba Zouhair
Kawtar Oukil
Houda Mabrouk
Année 2021-2022
Remerciements
C’était vraiment une besogne fascinante et riche d’événements. Bon nombre de personnes ont
contribué à faire de ce travail mémorable, et c’est le bon moment pour exprimer notre
gratitude à ces personnes.
Tout d’abord, Nous tenons à remercier Dieu le tout puissant qui nous a donné, la force et la
patience d’accomplir ce modeste travail.
Nous exprimons aussi nos sincères remerciements à notre professeur Monsieur Chiba
Zouhair, Professeur Universitaire chez Faculté des sciences Ain Chock.
Nous le remercions pour nous avoir donné cette opportunité afin d’améliorer notre
compétences et d’enrichir notre connaissances, pour ses encouragements et sa générosité en
matière de formation ainsi que pour les conseils prodigués qu’elle nous a apportés tout au
cours de cette semestre.
Aussi, nous exprimons nos vifs remerciements à tous les professeurs des années passées pour
la bonne qualité des informations qui nous ont fournies.
1|Page
Table des matières
Aucune entrée de table des matières n'a été trouvée.
2|Page
Introduction :
Avant l’apparition du Big Data, toutes les données étaient stockées dans des serveurs RDB
dans la structure de base de données relationnelle.
Lorsque le Big Data (plus précisément Hadoop) est apparu et que les développeurs ont
commencé à travailler sur Hadoop qui est une plate-forme ou un framework qui résout les
problèmes de Big Data et des écosystèmes tels que Hive, PIG, etc., ils avaient besoin d’un
système qui puisse les aider à obtenir les données du SGBDR antérieur vers le système
Hadoop et c’est ainsi que Sqoop est entré en scène pour fournir une interaction solide entre le
serveur de base de données relationnelle et le HDFS de Hadoop.
Et c’est la raison pour laquelle, Sqoop est également connu sous le nom de- ‘ « Sqoop : SQL
to Hadoop & Hadoop to SQL »
Pourquoi Sqoop ?
Pour le développeur Hadoop, le jeu proprement dit démarre après le chargement des données
dans HDFS. Ils jouent avec ces données afin d'obtenir diverses informations cachées dans les
données stockées dans HDFS.
Ainsi, pour cette analyse, les données résidant dans les systèmes de gestion de bases de
données relationnelles doivent être transférées vers HDFS. La tâche d'écrire du code
MapReduce pour importer et exporter des données de la base de données relationnelle vers
HDFS est inintéressante et fastidieuse. C'est là qu'Apache Sqoop vient à la rescousse et
supprime leur douleur. Il automatise le processus d'importation et d'exportation des données.
Sqoop facilite la vie des développeurs en fournissant une CLI pour importer et exporter des
données. Ils n'ont qu'à fournir des informations de base comme l'authentification de la base de
données, la source, la destination, les opérations, etc. Il s'occupe du reste. Sqoop convertit en
interne la commande en tâches MapReduce, qui sont ensuite exécutées sur HDFS. Il utilise le
framework YARN pour importer et exporter les données, ce qui offre une tolérance aux
pannes en plus du parallélisme.
Fonctionnalité de Sqoop :
Il existe de nombreuses fonctionnalités saillantes de Sqoop, qui nous montrent les différentes
raisons d'apprendre sqoop.
● Chargement complet : Apache Sqoop peut charger toute la table par une seule
commande. Vous pouvez également charger toutes les tables d’une base de données à
l’aide d’une seule commande.
3|Page
● Charge incrémentielle : Apache Sqoop offre également la possibilité de
charge incrémentielle où vous pouvez charger des parties de la table
chaque fois qu’elle est mise à jour.
Avantages de Sqoop :
Transfert de données efficace : Sqoop vous permet de transférer rapidement de grandes
quantités de données entre des bases de données relationnelles et des systèmes de fichiers
Hadoop. Il utilise des connexions en parallèle pour accélérer le transfert de données et peut
être configuré pour effectuer des importations et des exportations de données de manière
efficace.
Intégration facile avec d'autres outils : Sqoop est facile à intégrer à d'autres outils et
frameworks de traitement de données, tels qu’Apache Hive et Apache Pig. Cela vous permet
de créer des pipelines de traitement de données efficaces en combinant Sqoop avec d'autres
outils pour automatiser le transfert de données et le traitement des données.
Prise en charge de nombreuses sources et destinations de données : Sqoop prend en
charge un large éventail de sources et de destinations de données, y compris les bases de
données relationnelles courantes (par exemple, MySQL, Oracle et PostgreSQL) et les
systèmes de fichiers Hadoop (par exemple, HDFS et Amazon S3). Cela vous permet de
transférer des données entre de nombreux types de systèmes de manière transparente.
Facile à utiliser : Sqoop est facile à utiliser et possède une interface de ligne de commande
conviviale qui vous permet de configurer et de lancer des transferts de données de manière
simple. Il vous fournit également des outils de journalisation détaillés qui vous permettent de
suivre l'avancement du transfert de données et de détecter d'éventuels problèmes.
4|Page
Open source : Sqoop est un logiciel open source, ce qui signifie qu'il est gratuit à
utiliser et peut être modifié et distribué librement. Cela vous donne accès à une
grande communauté de développeurs et d'utilisateurs qui peuvent vous aider à résoudre les
problèmes et à améliorer l'outil.
Importation de données
Il s’agit du processus dans lequel des tables individuelles sont importées de la base de
données relationnelle vers Hadoop Distributed File System (HDFS). Aux fins du transfert,
la ligne d’une table est considérée comme un enregistrement dans HDFS. Les données
enregistrées sont stockées sous forme de données texte dans des fichiers texte, ou elles sont
stockées dans des fichiers Sequence et Avro en tant que données binaires.
Il est possible de faire de l’importation Sqoop dans Hive. Vous pouvez créer et charger une
partition ou une table avec Hive, tout en important les données. Lorsque cela est fait
manuellement, le type correct de mappage entre les données et les détails doit être effectué. Il
est possible de remplir le metastore Hive avec des métadonnées pour appeler la commande
nécessaire au chargement de la table et au partitionnement.
Sqoop prend également en charge l’importation incrémentielle de données où seules les lignes
nouvelles seront ajoutées à la base de données existante et, si nécessaire, les fichiers peuvent
même être fusionnés sans aucun problème.
Exportation de données
L’exportation Sqoop est utilisée pour transférer des données de HDFS vers un SGBDR.
L’entrée du fichier Sqoop serait les enregistrements considérés comme des lignes dans la
table. Ces données sont numérisées et traitées en enregistrements et utilisées avec le
délimiteur spécifié par l’utilisateur.
L’exportation des données se fait en deux étapes distinctes. La première étape comprend
l’examen de la base de données pour les métadonnées, et la deuxième étape comprend le
transfert des données. Les données Sqoop sont divisées en différentes divisions, puis il y a
l’utilisation des tâches de carte afin de pousser ces divisions dans la base de données.
Parfois, il peut être nécessaire d’utiliser des pipelines Hadoop pour traiter les données dans le
système de production et exécuter les fonctions métier critiques. Sqoop peut également être
5|Page
déployé pour exporter des données dans des banques de données externes, si
nécessaire.
Commandes Sqoop & arguments Courants
Générer du code pour interagir avec les enregistrements de base de
codegen
données
Create-hive- table Importer une définition de table dans Hive
Eval Évaluer une instruction SQL et afficher les résultats
exportation Exporter un répertoire HDFS vers une table de base de données
Aide Liste des commandes disponibles
importation Importer une table d’une base de données vers HDFS
Import-all-tables Importation de tables d’une base de données vers HDFS
liste_bases de
Répertorier les bases de données disponibles sur un serveur
données
tableaux_listes Répertorier les tables disponibles dans une base de données
Version Afficher les informations de version
6|Page
Comme vous pouvez le voir dans l'image ci-dessous, nous avons créé une base de
données des employés appelle employees et une table des employées appelle employee que
nous importerons dans HDFS.
Nous avons peuplé les données dans la table à l'aide de l'instruction INSERT :
7|Page
8|Page
Nous avons affiché le contenu de la table a l’aide se commande suivant :
Select * from employee;
9|Page
La commande pour importer la table est :
sqoop import --connect jdbc:mysql://localhost/employees --
username training --password training --table employee
Comme vous pouvez le voir dans l'image ci-dessous, après avoir exécuté
cette commande, les tâches de Map seront exécutées à l'arrière.
10 | P a g e
Une fois le code exécuté, vous pouvez vérifier l'interface utilisateur Web de
HDFS, c'est-à-dire localhost:50070 où les données sont importées.
11 | P a g e
Sqoop - Commande IMPORT avec le répertoire cible
12 | P a g e
Sqoop importe des données en parallèle à partir de la plupart des sources de bases
de données. La propriété -m est utilisée pour spécifier le nombre de mappeurs à
exécuter.
Vous pouvez spécifier le nombre de tâches de map (processus parallèles) à utiliser pour
effectuer l'importation à l'aide de l’argument -m ou –num-mappers. Chacun de ces arguments
prend une valeur entière qui correspond au degré de parallélisme à employer.
Vous pouvez contrôler le nombre de mappeurs indépendamment du nombre de fichiers
présents dans le répertoire. Les performances à l'exportation dépendent du degré de
parallélisme. Par défaut, Sqoop utilisera quatre tâches en parallèle pour le processus
d'exportation. Cela peut ne pas être optimal, vous devrez expérimenter avec votre propre
configuration particulière. Des tâches supplémentaires peuvent offrir une meilleure
simultanéité, mais si la base de données est déjà bloquée lors de la mise à jour des index, de
l'appel de déclencheurs, etc., une charge supplémentaire peut réduire les performances.
Vous pouvez voir dans l'image ci-dessous que le nombre de tâches de mappage est de 1.
Le nombre de fichiers créés lors de l'importation de tables MySQL est égal au nombre de
mappeurs créés.
Nous avons Archivé « /employee » si les données sont importées avec succès ou non.
13 | P a g e
Sqoop - Commande IMPORT avec clause Where
Vous pouvez importer un sous-ensemble d'une table à l'aide de la clause 'where' dans l'outil
données respectif et stocke le résultat dans un répertoire cible dans HDFS. Vous pouvez
utiliser la commande suivante pour importer des données avec la clause ' where ' :
14 | P a g e
Vous pouvez voir dans l'image ci-dessous que le nombre de tâches de mappage est de 3.
15 | P a g e
La commande pour l'importation incrémentielle est :
sqoop import --connect jdbc:mysql://localhost/employees
--username training --password training --table employee --
target-dir /Latest_Employees
--incremental append --check-column num --last-value 23
V
ous pouvez voir dans l'image ci-dessous, un nouveau fichier est créé avec les données mises à
jour.
Vous pouvez importer toutes les tables du serveur de base de données RDBMS vers
le HDFS. Chaque donnée de table est stockée dans un répertoire séparé et le nom du
répertoire est le même que le nom de la table. Il est obligatoire que chaque table de
16 | P a g e
cette base de données ait un champ de clé primaire. La commande pour
importer toute la table d'une base de données est :
sqoop import-all-tables --connect
jdbc:mysql://localhost/employees --username training –password
training
Vous pouvez répertorier les bases de données présentes dans la base de données relationnelle à
"SHOW DATABASES" sur le serveur de base de données. La commande pour lister les bases
de données est :
sqoop list-databases --connect jdbc:mysql://localhost/ --username
training –password training
17 | P a g e
Sqoop — Liste des tableaux
Vous pouvez également répertorier les tables d'une base de données particulière dans le serveur
la requête "SHOW TABLES". La commande pour lister les tables d'une base de données est :
sqoop list - tables -- connect jdbc : mysql://localhost/employes
--username training –password training
Com
me nous l'avons vu ci-dessus, vous pouvez également exporter des données du HDFS vers la
base de données RDBMS. La table cible doit exister dans la base de données cible.
Les données sont stockées sous forme d'enregistrements dans HDFS. Ces enregistrements sont
lus, analysés et délimités par un délimiteur spécifié par l'utilisateur. L'opération par défaut
consiste à insérer tous les enregistrements des fichiers d'entrée dans la table de base de données
à l'aide de l'instruction INSERT.
En mode mise à jour, Sqoop génère l'instruction UPDATE qui remplace l'enregistrement
existant dans la base de données.
Donc, d'abord, nous créons une table vide, où nous allons exporter nos données.
La commande pour exporter des données de HDFS vers une base de données relationnelle est :
sqoop export --connect jdbc:mysql://localhost/employees --
username training –password training --table emp --export-dir
/user/root/employee
18 | P a g e
Nous avons archivé MySQL si les données sont exportées avec succès ou non.
Sqoop — Codegen
Dans une application orientée objet, chaque table de base de données a une classe d'objet
d'accès aux données qui contient les méthodes 'getter' et 'setter' pour initialiser les
objets. Codegen génère automatiquement la classe DAO. Il génère une classe DAO en Java,
19 | P a g e
Vous pouvez voir le chemin dans l'image ci-dessus où le code est généré. Allons le chemin et
vérifions les fichiers qui sont créés.
20 | P a g e
On accorder tous les privilèges à ‘hduser’ sur toutes les bases de données:
Nous avons créé la table ‘emp ‘où les données doivent être importées puis
nous avons inséré les données comme le montre les images ci-dessous.
21 | P a g e
Voilà la description de la table ‘emp’ :
22 | P a g e
Configuration du fichier mapred-site.xml :
23 | P a g e
24 | P a g e
Import department database from RDBMS to HDFS
25 | P a g e
Export data from HDFS to RDBMS
26 | P a g e
27 | P a g e
Alors comme on peut voir la table ‘dept’ est ajoute à la base de données :
28 | P a g e
29 | P a g e
sqoop merge --new-data newer --onto older --target-dir
merged \
mysql –u training –p
30 | P a g e
On crée une base de donnees et une table hive ou les donnees
doivent etre importees
31 | P a g e
Il vous montre les données de la table hive_table_export et les champs sont séparés
par une virgule (‘ ‘).
32 | P a g e
33 | P a g e
34 | P a g e