Hadoop
MapReduce &
Apache Sqoop
Automne 2024
Hamza Takrouni
[Link]@[Link]
• Le formatage du fichier peut entraîner la présentation docker run -d \
de commandes sur plusieurs lignes, ce qui peut
parfois causer des erreurs d'exécution. Afin de --name nom_conteneur \
résoudre ce problème, il est crucial d'adapter les
commandes en utilisant le caractère de barre oblique -p 80:80 \
inverse (\) pour indiquer que la commande continue
sur la ligne suivante dans Linux. Pour Windows, ubuntu
l'accent circonflexe (^) est utilisé à la place.
• D'autre part, il est tout aussi important de supprimer docker run -d ^
les barres obliques et les accents circonflexes inutiles --name nom_conteneur ^
dans les commandes, afin d'éviter toute confusion et
de garantir une exécution sans erreur. -p 80:80 ^
ubuntu
2
Docker
• Docker est une plateforme open-source qui permet de créer, de déployer et de gérer des
applications dans des conteneurs. Les conteneurs sont des unités légères et portables qui
peuvent être exécutées sur n'importe quel système compatible avec Docker, offrant ainsi
une grande flexibilité et portabilité aux applications.
• Conteneurs
• Un conteneur est une unité logicielle légère qui encapsule une application et ses dépendances.
• Les conteneurs sont portables et peuvent fonctionner sur n'importe quel système compatible avec
Docker, qu'il s'agisse d'un ordinateur portable, d'un serveur ou même dans le cloud.
• Ils isolent les applications les unes des autres, garantissant qu'elles fonctionnent de manière
cohérente dans différents environnements.
• Isolation : Les conteneurs offrent une isolation des applications, assurant qu'elles ne se
interfèrent pas mutuellement.
• Portabilité : Les conteneurs peuvent être exécutés sur n'importe quel système compatible
avec Docker, garantissant une portabilité totale des applications. Source : Docker vs Virtual Machines (VMs) A Practical Guide to
• Facilité de déploiement : Docker simplifie le déploiement d'applications en éliminant les Docker Containers and VMs
problèmes de compatibilité et en assurant que l'application fonctionne de la même manière
partout.
• Flexibilité : Docker permet d'utiliser différentes technologies, langages de programmation,
bases de données, etc., dans un même environnement.
3
Installation de Docker
• Docker Desktop
• [Link]
• Installation (étapes): [Link]
4
Installation de Docker
• Lancement : Test
5
Installation de Docker
• Lancement : Test
6
Installation de Docker
• Lancement : Test
7
Apache Sqoop
• Apache Sqoop est un outil conçu pour transférer
efficacement des données en masse entre Apache Hadoop
et les sources de données externes telles que des bases de
données relationnelles, des entrepôts de données
d'entreprise.
• Le transfert de données entre les systèmes de bases de
données relationnelles et HDFS est fastidieux. Les
développeurs peuvent toujours écrire des scripts
personnalisés pour transférer des données vers et depuis
Hadoop, mais Apache Sqoop offre une alternative.
• Sqoop automatise la majeure partie du processus.
Source : techvidvan
• Sqoop utilise le Framework MapReduce pour importer et
exporter les données, qui fournit un mécanisme parallèle ainsi
qu'une tolérance aux pannes.
• Les développeurs doivent simplement fournir des informations
de base telles que les détails d'authentification de la source, de
la destination et de la base de données dans la commande
Sqoop et Sqoop s'occupe de la partie restante.
8
Apache Sqoop
• Un flux de travail typique du Big Data avec Hadoop et
Sqoop consiste à envoyer les données vers Hive par
exemple afin que les tâches de traitement et de
transformation puissent être effectuées sur Apache
Hadoop.
• Une fois le traitement terminé, les données peuvent
être réexportées vers la base de données.
• Hadoop est utilisé à des fins ETL dans ce cas.
• Lors d'une importation Sqoop, chaque tâche de
mappage se voit attribuer une partie des données à
importer.
• Sqoop distribue les données uniformément entre les
taches pour garantir des performances élevées. Source : educba
9
Hadoop Streaming (hadoop-
[Link])
• Un fichier avec l'extension de fichier .JAR est un
fichier d'archive Java utilisé pour stocker des
programmes Java dans un seul fichier.
• Certains contiennent des fichiers qui les font
fonctionner comme des applications autonomes et
d'autres contiennent des bibliothèques de
programmes que d'autres programmes peuvent
utiliser.
• Contient les classes d'une application Java, ainsi que
toutes les ressources utilisées.
• Hadoop streaming est une bibliothèque Hadoop
qui permet d'utiliser n'importe quel programme
comme un programme MapReduce.
• Il existe de nombreux programmeurs non-java qui ont
besoin d’effectuer des traitements sur les
mégadonnées.
10
Infrastructure
1 2
basenode
Ubuntu
basenode
master slaveone slavetwo
11
Infrastructure
Maitre
master
demonetwork
slaveone
slavetwo
Esclave Esclave
12
Création des conteneurs
• Création d’un pont réseau dans Docker.
13
Création des conteneurs
• Création d’une image/nœud contenant les configurations de
base pour un cluster Hadoop.
14
Création des conteneurs
• Création d’une image/nœud contenant les configurations de
base pour un cluster Hadoop.
• Image docker
• Les images Docker sont des modèles de conteneurs qui contiennent
l'application et ses dépendances. Elles sont utilisées pour créer des
conteneurs.
15
Création des conteneurs
• apt update
• Création d’une • apt install openjdk-8-jdk
image/nœud
• apt install ssh
• apt install pdsh
contenant les •
•
apt install wget
apt install nano
configurations de •
•
wget -P ~ [Link]
tar xzf /root/[Link]
base pour un • mv hadoop-3.3.4 hadoop
• nano hadoop/etc/hadoop/[Link]
cluster Hadoop. •
• export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
mv hadoop /usr/local/hadoop
• nano /etc/environment
• :/usr/local/hadoop/bin:/usr/local/hadoop/sbin
• JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/jre"
• adduser userdemo
• nano /etc/hosts
• usermod -aG userdemo userdemo
• [Link] master
• chown userdemo:root -R /usr/local/hadoop/
• [Link] slaveone
• chmod g+rwx -R /usr/local/hadoop/
• [Link] slavetwo
• adduser userdemo sudo
16
Création des conteneurs
• nano /usr/local/hadoop/etc/hadoop/[Link]
• Création d’une • <property>
• <name>[Link]</name>
image/nœud •
• <value>hdfs://master:9000</value>
</property>
contenant les • nano /usr/local/hadoop/etc/hadoop/[Link]
• <property>
configurations de
• <name>[Link]</name>
• <value>/usr/local/hadoop/data/nameNode</value>
• </property>
base pour un • <property>
• <name>[Link]</name>
cluster Hadoop.
• <value>/usr/local/hadoop/data/dataNode</value>
• </property>
• <property>
• <name>[Link]</name>
• <value>2</value>
• </property>
• <property>
• <name>[Link]</name>
• <value>true</value>
• </property>
• nano /usr/local/hadoop/etc/hadoop/workers
• slaveone
• slavetwo
17
Création des conteneurs
• Création d’une image/nœud contenant les configurations de base pour un cluster
Hadoop.
• Configurer MapReduce
• Ajouter la configuration dans le fichier « [Link] » et sauvegarder.
• Nous devons configurer la variable [Link] qui spécifie l' hôte et le port de JobTracker (MapReduce
maitre).
• nano /usr/local/hadoop/etc/hadoop/[Link]
<configuration>
<property>
<name>[Link]</name>
<value>master:9001</value>
</property>
</configuration>
18
Création des conteneurs
• Configurer MapReduce
• Le fichier de configuration [Link] est un fichier de
configuration spécifique à Hadoop. Il est utilisé pour définir divers
paramètres de configuration pour le système MapReduce d'Hadoop.
Ce fichier se trouve généralement dans le répertoire de configuration
d'Hadoop sur le système de fichiers de chaque nœud du cluster
Hadoop.
• La propriété [Link] était utilisée dans les versions antérieures
d'Hadoop pour spécifier l'adresse du JobTracker dans un cluster MapReduce.
19
Création des conteneurs
• Création d’une image/nœud contenant les configurations de
base pour un cluster Hadoop.
• Configurer MapReduce
20
Création des conteneurs
• Création d’une image/nœud contenant les configurations de
base pour un cluster Hadoop.
• Configurer MapReduce
21
Création des conteneurs
• Création d’une image/nœud contenant les configurations de
base pour un cluster Hadoop.
• Sauvegarder le conteneur comme une image.
22
Création des conteneurs
• Création d’une image/nœud contenant les configurations de
base pour un cluster Hadoop.
• Sauvegarder le conteneur comme une image.
23
Création du cluster Hadoop
• Création du cluster Hadoop à partir de l’image « basenode »
• Maitre
24
Création du cluster Hadoop
• Création du cluster Hadoop à partir de l’image « basenode »
• Les deux esclaves
25
Création du cluster Hadoop
• Configuration du ssh
• Les deux esclaves
26
Création du cluster Hadoop
• Configuration du ssh
• Maitre
27
Création du cluster Hadoop
• Configuration du ssh
• Maitre
28
Démarrage de Hadoop
• Dans le nœud :
• Maitre
29
Démarrage de Hadoop
30
Exemple MapReduce
• Calcul du nombre d’occurrences
• Dans le nœud :
• Maitre
• Création des répertoires.
• hdfs dfs -mkdir /user
• hdfs dfs -mkdir /user/userdemo
• hdfs dfs -mkdir /user/userdemo/demo1
• hdfs dfs -mkdir /user/userdemo/demo1/input
• hdfs dfs -mkdir /user/userdemo/demo1/output
31
Exemple MapReduce
• Calcul du nombre d’occurrences
• Dans le nœud :
• Maitre
• Création des répertoires.
32
Exemple MapReduce
• Calcul du nombre d’occurrences
• Dans le nœud :
• Maitre
• Création d’un fichier texte incluant les
données.
• echo " toronto gatineau ottawa
montreal toronto toronto toronto
toronto toronto gatineau gatineau
gatineau gatineau gatineau gatineau
gatineau gatineau ottawa ottawa
ottawa ottawa gatineau toronto toronto
toronto " >> demo1fichier
33
Exemple MapReduce
• Calcul du nombre
d’occurrences
• Dans le nœud :
• Maitre
• Copier le fichier dans le
répertoire « demo1/input »
• hdfs dfs -copyFromLocal
demo1fichier
/user/userdemo/demo1/input
34
Exemple MapReduce
• Calcul du nombre d’occurrences
• Dans le nœud :
• Maitre
• Exécuter le programme MapReduce en utilisant l’exemple fourni dans
l’installation de Hadoop.
• hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-
[Link] wordcount
/user/userdemo/demo1/input/demo1fichier
/user/userdemo/demo1/output/demo1output
35
Exemple MapReduce
• [Link]
• Un fichier JAR (Java Archive) est un package Java qui contient des classes
Java, des métadonnées et des ressources. Il est utilisé pour distribuer des
applications Java.
• [Link] est le fichier JAR qui contient les
classes Java nécessaires pour exécuter divers exemples de MapReduce
inclus avec Hadoop.
• wordcount est le nom de la classe principale dans le fichier JAR hadoop-
[Link].
• Dans Hadoop, l'exemple WordCount est une application MapReduce simple qui
compte le nombre d'occurrences de chaque mot dans un ensemble de fichiers texte.
36
Exemple MapReduce
• Calcul du nombre d’occurrences
• Dans le nœud :
• Maitre
• Exécuter le programme MapReduce
en utilisant l’exemple fourni dans
l’installation de Hadoop.
• hadoop jar
/usr/local/hadoop/share/hadoop/mapre
duce/hadoop-mapreduce-examples-
[Link] wordcount
/user/userdemo/demo1/input/demo1fic
hier
/user/userdemo/demo1/output/demo1
output
37
Exemple MapReduce
• Calcul du nombre d’occurrences
• Dans le nœud :
• Maitre
• Exécuter le programme MapReduce
en utilisant l’exemple fourni dans
l’installation de Hadoop.
• hadoop jar
/usr/local/hadoop/share/hadoop/mapre
duce/hadoop-mapreduce-examples-
[Link] wordcount
/user/userdemo/demo1/input/demo1fic
hier
/user/userdemo/demo1/output/demo1
output
38
Exemple MapReduce
• Calcul du nombre
d’occurrences
• Dans le nœud :
• Maitre
• Exécuter le
programme
MapReduce en
utilisant l’exemple
fourni dans
l’installation de
Hadoop.
39
Installation et configuration d’Apache
Sqoop
• Dans le nœud :
• Maitre
• wget
[Link]
g/dist/sqoop/1.4.7/sqoop-
[Link]
• tar -xvf [Link]
40
Installation et configuration d’Apache
Sqoop
• Dans le nœud :
• Maitre
• mv sqoop-1.4.7 /usr/lib/sqoop
• cd /usr/lib/sqoop/conf
• mv [Link] [Link]
41
Installation et configuration d’Apache
Sqoop
• [Link]
• C’est un modèle de fichier de configuration utilisé dans Apache Sqoop.
• Il contient des variables d'environnement et des paramètres de configuration à personnaliser en fonction de
l’environnement spécifique.
• Les utilisateurs peuvent copier ce modèle et le personnaliser en fonction desbesoins en renommant le fichier en
[Link].
• export HADOOP_MAPRED_HOME=/usr/local/hadoop
• export HADOOP_COMMON_HOME=/usr/local/hadoop
• HADOOP_MAPRED_HOME et HADOOP_COMMON_HOME spécifient les chemins vers les composants
MapReduce et Common d'Hadoop respectivement.
• Ces variables d'environnement indiquent à Sqoop où trouver les bibliothèques et les fichiers nécessaires pour
interagir avec Hadoop.
42
Installation et configuration d’Apache
Sqoop
• Dans le nœud :
• Maitre
• nano [Link]
• export
HADOOP_MAPRED_HOME=/usr/l
ocal/hadoop
• export
HADOOP_COMMON_HOME=/usr/l
ocal/hadoop
43
Installation et configuration d’Apache
Sqoop
• Dans le nœud :
• Maitre
• cd /usr/lib/sqoop/
• wget [Link]
[Link]/n
exus/content/reposit
ories/libraries/org/ap
ache/sqoop/sqoop/1
.4.7/[Link]
44
Installation et configuration d’Apache
Sqoop
• wget [Link]
[Link]/nexus/content/repositories/libraries/org/apache/s
qoop/sqoop/1.4.7/[Link]
• [Link] est un fichier JAR (Java Archive) qui contient les
classes et les ressources nécessaires pour exécuter Sqoop version
1.4.7.
• Le fichier [Link] peut être présent dans le répertoire de
Sqoop une fois l'archive extraite sinon il faut l’ajouter.
45
Installation et configuration d’Apache
Sqoop
• Dans le nœud :
• Maitre
• export
SQOOP_HOME=/usr/lib/sqoop
• export
PATH=$PATH:$SQOOP_HOME
/bin
• sqoop version
46
Installation et configuration d’Apache
Sqoop
• Dans le nœud (configuration):
• Maitre
• cd /usr/lib/sqoop/lib
• apt install links
47
Installation et configuration d’Apache
Sqoop
• Dans le nœud (configuration):
• Maitre
• links [Link]
48
Installation et configuration d’Apache
Sqoop
• Dans le nœud (configuration):
• Maitre
• links [Link]
• Taper « q » pour quitter
49
Installation et configuration d’Apache
Sqoop
• Dans le nœud (configuration):
• Maitre
• tar -xvf sqljdbc_11.2.0.0_enu.[Link]
• rm -r sqljdbc_11.2.0.0_enu.[Link]
50
Installation et configuration d’Apache
Sqoop
• Dans le nœud (configuration):
• Maitre
• cd sqljdbc_11.2/enu/
• mv [Link] [Link] mssql-jdbc-
[Link] [Link] /usr/lib/sqoop/lib/
51
Installation et configuration d’Apache
Sqoop
• Dans le nœud (configuration):
• Maitre
• cd ../../
• rm -r sqljdbc_11.2
52
Installation et configuration d’Apache
Sqoop
• Dans le nœud (configuration):
• Maitre
• links [Link]
• links [Link]
lang/2.6/
53
Installation et configuration d’Apache
Sqoop
• Dans le nœud
(configuration):
• Maitre
• links
[Link]
maven2/org/apache/avro/
avro/1.8.2/
• links
[Link]
maven2/commons-
lang/commons-lang/2.6/
54
Installation et configuration d’Apache
Sqoop
• Dans le nœud
(configuration):
• Maitre
• links
[Link]
maven2/org/apache/avro/
avro/1.8.2/
• links
[Link]
maven2/commons-
lang/commons-lang/2.6/
55
Installation et configuration d’Apache
Sqoop
• Dans le nœud
(configuration):
• Maitre
• links
[Link]
maven2/org/apache/avro/
avro/1.8.2/
• links
[Link]
maven2/commons-
lang/commons-lang/2.6/
56
Installation et configuration d’Apache
Sqoop
• avro/avro/1.8.2/ : La bibliothèque Apache Avro version 1.8.2. Avro est un
framework de sérialisation de données qui est souvent utilisé dans le
contexte du traitement de données et du stockage de données.
• commons-lang/commons-lang/2.6/ : La bibliothèque Apache Commons
Lang version 2.6. est une bibliothèque qui fournit de nombreuses classes
utilitaires pour la manipulation de chaînes, d'objets et d'autres tâches
courantes en Java.
• sqljdbc_11.2 : Pilote JDBC pour Microsoft SQL Server, qui permet de
connecter une application Java à une base de données SQL Server.
57
Installation et configuration d’Apache
Sqoop
• Dans le nœud
(configuration):
• Maitre
• mkdir classdir
• chown userdemo:root -
R /usr/lib/sqoop/
• chmod g+rwx -R
/usr/lib/sqoop/
• su – userdemo
• cd /usr/lib/sqoop/lib
58
SQOOP importation des données
• Importation des données de SQL Server vers HDFS avec SQOOP
• SQL Server (configuration):
59
SQOOP importation des données
• Importation des données de SQL Server vers HDFS avec SQOOP
• SQL Server (configuration):
60
SQOOP importation des données
• Importation des données de SQL Server vers HDFS avec SQOOP
• SQL Server (configuration):
61
SQOOP importation des données
• Importation des données de SQL Server vers HDFS avec SQOOP
• SQL Server (configuration):
62
SQOOP importation des données
• sqoop list-tables --connect
• La commande Sqoop indique à Sqoop de lister les tables de la base de
données spécifiée.
• --connect : Cela spécifie l'URL de connexion JDBC à la base de
données SQL Server.
• --username demo -P: Cela spécifie le nom d'utilisateur (demo) pour se
connecter à la base de données. L'option -P indique à Sqoop de
demander le mot de passe lors de l'exécution de la commande.
63
SQOOP importation des données
• Importation des données de SQL Server
vers HDFS avec SQOOP
• Dans le nœud (exécution):
• Maitre
• Afficher la liste des tables dans la bd
« NorthwindDW »
• export SQOOP_HOME=/usr/lib/sqoop
• export
PATH=$PATH:$SQOOP_HOME/bin
• sqoop list-tables \
--connect
'jdbc:sqlserver://[Link]:1433;datab
ase=NorthwindDW' --username demo -P
64
SQOOP importation des données
• Importation des données de SQL Server vers
HDFS avec SQOOP
• Dans le nœud (exécution):
• Maitre
sqoop codegen -[Link]=true \
--connect 'jdbc:sqlserver://[Link]:1433;database=NorthwindDW' --
username demo -P \
--query "select [Link], [Link],
[Link], [Link], [Link],
[Link], [Link] from FactOrderDetails
inner join DimProduct on [Link] =
[Link] inner join DimAddress on
[Link] = [Link]
inner join DimDate on [Link] =
[Link] where \$CONDITIONS" \
--bindir /usr/lib/sqoop/lib/classdir
65
SQOOP importation des données
• sqoop codegen
• Commande Sqoop utilisée pour générer des classes Java basées sur le résultat de la requête SQL spécifiée.
• sqoop codegen : Cela indique à Sqoop de générer du code Java basé sur le résultat de la requête SQL.
• [Link]=true : Cette option est utilisée pour influencer la manière dont les classes
et les dépendances sont chargées lors de l'exécution des travaux MapReduce dans un cluster Hadoop.
• Plus précisément, cela signifie que les classes définies par l'utilisateur (comme celles générées par Sqoop) auront la priorité
sur les classes système lors de l'exécution des travaux MapReduce.
• --query : Spécifie la requête SQL à exécuter
• L'option \$CONDITIONS est utilisée par Sqoop pour diviser la requête et effectuer une importation parallèle des
données.
• --bindir : Spécifie le répertoire de sortie où les classes Java générées seront stockées.
• Cette commande générera des classes Java basées sur le schéma de résultat de la requête SQL, et ces classes
peuvent ensuite être utilisées dans des applications Java pour traiter les données extraites de la base de données
SQL Server.
66
SQOOP importation des données
• Importation des données de SQL Server vers HDFS avec
SQOOP
• Dans le nœud (exécution):
• Maitre
sqoop import -[Link]=true -
[Link].allow_text_splitter=true -libjars
/usr/lib/sqoop/lib/classdir/[Link] \
--connect
'jdbc:sqlserver://[Link]:1433;database=NorthwindDW' --
username demo -P \
--query "select [Link],
[Link], [Link],
[Link], [Link], [Link],
[Link] from FactOrderDetails inner
join DimProduct on [Link] =
[Link] inner join DimAddress on
[Link] =
[Link] inner join DimDate on
[Link] = [Link] where
\$CONDITIONS" \
--bindir /usr/lib/sqoop/lib/classdir --target-dir northwinddw --
split-by ProductName
67
SQOOP importation des données
• Importation des données de SQL Server vers HDFS avec
SQOOP
• Dans le nœud (exécution):
• Maitre
sqoop import -[Link]=true -
[Link].allow_text_splitter=true -libjars
/usr/lib/sqoop/lib/classdir/[Link] \
--connect
'jdbc:sqlserver://[Link]:1433;database=NorthwindDW' --
username demo -P \
--query "select [Link],
[Link], [Link],
[Link], [Link], [Link],
[Link] from FactOrderDetails inner
join DimProduct on [Link] =
[Link] inner join DimAddress on
[Link] =
[Link] inner join DimDate on
[Link] = [Link] where
\$CONDITIONS" \
--bindir /usr/lib/sqoop/lib/classdir --target-dir northwinddw --
split-by ProductName
68
SQOOP importation des données
• sqoop import
• Importe des données depuis SQL Server vers Hadoop.
• -[Link].allow_text_splitter=true : Cette option spécifie
d'autoriser l'utilisation du séparateur de texte pour les colonnes de type texte lors de
la division des données.
• -libjars /usr/lib/sqoop/lib/classdir/[Link] : Spécifie un fichier JAR externe
qui contient des classes personnalisées nécessaires pour l'importation des données.
• --target-dir : Spécifie le répertoire de destination dans Hadoop où les données
extraites seront stockées.
• --split-by : Indique à Sqoop de diviser les données en utilisant la colonne
ProductName pour garantir une répartition efficace des données entre les tâches
MapReduce.
69
SQOOP importation des données
• Importation des données de SQL
Server vers HDFS avec SQOOP
• Dans le nœud (résultat):
• Maitre
70
Exemple MapReduce
• Calcul du total de la quantité de produits vendus dans l’entrepôt
NorthwindDW.
• Dans le nœud :
• Maitre
• Création des répertoires.
• hdfs dfs -mkdir /user
• hdfs dfs -mkdir /user/userdemo
• hdfs dfs -mkdir /user/userdemo/demo2
• hdfs dfs -mkdir /user/userdemo/demo2/output
71
Exemple MapReduce
• Calcul du total de la quantité de produits vendus dans l’entrepôt
NorthwindDW.
• Dans le nœud :
• Maitre
• Création des répertoires.
72
Exemple MapReduce
• Calcul du total de la
quantité de produits vendus
dans l’entrepôt
NorthwindDW.
• Dans le nœud :
• Maitre
• Création d’un fichier
« [Link] ».
73
Exemple MapReduce
• Calcul du total de la
quantité de produits
vendus dans l’entrepôt
NorthwindDW.
• Dans le nœud :
• Maitre
• Création d’un fichier
« [Link] ».
74
Exemple MapReduce
• Calcul du total de la
quantité de produits vendus
dans l’entrepôt
NorthwindDW.
• Dans le nœud :
• Maitre
• Création d’un fichier
« [Link] ».
75
Exemple MapReduce
• Calcul du total de la
quantité de produits
vendus dans l’entrepôt
NorthwindDW.
• Dans le nœud :
• Maitre
• Création d’un fichier
« [Link] ».
76
Exemple MapReduce
• Calcul du total de la quantité de produits vendus dans l’entrepôt
NorthwindDW.
• Dans le nœud :
• Maitre
• Exécuter le programme MapReduce
hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/[Link] \
-file /home/userdemo/[Link] -mapper /home/userdemo/[Link] \
-file /home/userdemo/[Link] -reducer /home/userdemo/[Link] \
-input /user/userdemo/northwinddw/* -output
/user/userdemo/demo2/output/demo2output
77
Exemple MapReduce
• hadoop jar /usr/local/hadoop/share/hadoop/tools/lib/[Link] \
-file /home/userdemo/[Link] -mapper /home/userdemo/[Link] \
-file /home/userdemo/[Link] -reducer /home/userdemo/[Link] \
-input /user/userdemo/northwinddw/* -output\
/user/userdemo/demo2/output/demo2output
• Cette commande Hadoop exécute un travail MapReduce en utilisant les scripts Python [Link] et [Link]
pour effectuer des opérations de map et de reduce respectivement. Les données sont lues à partir du répertoire
d'entrée spécifié et les résultats sont écrits dans le répertoire de sortie spécifié.
• hadoop jar : Indique à Hadoop d'utiliser l'outil de streaming pour exécuter un travail MapReduce.
• -file …. -mapper …. : Spécifie le fichier et la commande qui seront utilisés comme tâche de map. Le fichier
[Link] est envoyé à tous les nœuds du cluster et la commande spécifiée est utilisée pour exécuter la tâche de
map.
• -file …. -reducer …. : Spécifie le fichier et la commande qui seront utilisés comme tâche de reduce. Le fichier
[Link] est envoyé à tous les nœuds du cluster et la commande spécifiée est utilisée pour exécuter la tâche de
reduce.
78
Exemple MapReduce
• Calcul du total de la
quantité de produits
vendus dans l’entrepôt
NorthwindDW.
• Dans le nœud :
• Maitre
• Exécuter le programme
MapReduce
79
Exemple MapReduce
• Calcul du total de la
quantité de produits
vendus dans l’entrepôt
NorthwindDW.
• Dans le nœud :
• Maitre
• Résultats
80
Exemple MapReduce
• Calcul du total de la
quantité de produits
vendus dans l’entrepôt
NorthwindDW.
• Dans le nœud :
• Maitre
• Résultats
81
Exemple MapReduce
• Calcul du
total de la
quantité de
produits
vendus
dans
l’entrepôt
NorthwindD
W.
• Dans le
nœud :
• Maitre
• Résultats
82
Références
• Big Data with Hadoop MapReduce A Classroom Approach , 2020, par Rathinaraja Jeyaraj,
Ganeshkumar Pugalendhi et Anand Paul.
• Hadoop Real-World Solutions Cookbook - Second Edition, 2016, par Tanmay Deshpande.
• Field Guide to Hadoop: An Introduction to Hadoop, Its Ecosystem, and Aligned Technologies, 2015,
par Kevin Sitto et Marshall Presser.
• Apache Hadoop, [Link]
• Ubuntu, [Link]
• VirtualBox, [Link]
83