Vous êtes sur la page 1sur 27

Tanger Med Port Authority

Traitement de données dans


des systèmes distribués

Rapport de stage de fin d’année 2018/2019


Encadré par : M.EDDOUJAJI

ELKHATTABI Kaoutar
Ecole Nationale des Sciences Appliquées de Tanger
Table des matières:
I- Introduction .................................................................................. 2
Préambule : ....................................................................................................................... 2
Présentation de l’entreprise : ............................................................................................ 3

II- Traitement de données dans les systèmes distribués : ......... 5


Systèmes distribués : ........................................................................................................ 5
Bases de données distribuées : .......................................................................................... 6
III-Benchmarking (Apache Spark vs Hadoop): ............................ 6
Hadoop : ............................................................................................................................ 6
MapReduce : ..................................................................................................................... 8
HDFS : .............................................................................................................................. 9
YARN : .............................................................................................................................10
Spark : .............................................................................................................................10
Spark vs Hadoop: ............................................................................................................11
Problème des petits fichiers dans Hadoop/Spark ...........................................................11

IV-Big Data et IoT : .......................................................................... 12


IoT : ..................................................................................................................................12
IoT et RoRo : (Navires Rouliers) ......................................................................................13
Hadoop et IoT : ................................................................................................................13

V- Mise en place d’un cluster multi-nœuds de Hadoop : ......... 14


VI-WordCount : programme dans Hadoop :................................ 18
VII-Conclusion : ................................................................................ 25
VIII-Bibliographie : .......................................................................... 26

1
I- Introduction :
Dans le cadre de sa formation, l’Ecole Nationale des Sciences Appliquées
de Tanger, exige un stage de fin d’année à travers lequel les étudiants ingénieurs
peuvent concrétiser leurs connaissances acquises durant l’année et ainsi découvrir
les différents métiers et faire le pas dans le monde de l’entreprise.
Le stage effectué est un projet de recherche, au sein de l’autorité portuaire de
Tanger Med, qui concerne le traitement des Big Data dans des systèmes distribués.
Ce rapport décriera les différentes phases du projet, à savoir : la recherche,
l’installation et le test. Cependant, il couvrira les concepts abordés, les différents
outils existants et enfin les atouts du projet.

Préambule :
Le Big Data représente un ensemble de données volumineux qui ne peuvent pas
être traités avec des outils de gestion de bases de données classiques.
Ceux sont des données qui ne peuvent pas être contenues par lignes et colonnes
dans un fichier Excel.
Elles ne peuvent pas être analysées avec des méthodes analytiques traditionnelles.
Le Big Data répond aux 3 problématiques posées par l’augmentation du volume
d’informations de ces dernières années :
• Volume : Quantité d’informations à collecter et traiter.
• Vélocité : Supporter une grande fréquence de collecte d’information.
• Variété : et la compatibilité avec plusieurs sources d’informations
(structurées, non structurées, photos, vidéos…)
Le volume de données étant en constante évolution, il nous faut stocker, lire et
traiter une large quantité de données en temps réel.
Nous avons donc besoin d'un moyen de paralléliser le traitement de ces données
(lecture, écriture) tout en garantissant sa disponibilité en cas de panne matérielle.
Le Framework Hadoop est un des outils Big Data Open Source qui permet de
répondre à cette problématique.
Il permet en effet un traitement massif de données en parallèle en proposant un
nouveau système de stockage distribué, inspiré du système GFS de Google tout en
garantissant la haute disponibilité des données.
Hadoop est utilisé par la plupart des grandes entreprises IT devant au quotidien
traiter une large quantité d’informations : Yahoo, Facebook, Twitter, Amazon,
Netflix…
2
Présentation de l’entreprise :

TMSA : L’Agence Spéciale Tanger Méditerranée est chargée de l’aménagement,


du développement et de la gestion du complexe portuaire Tanger Med et de la
plateforme industrielle qui lui est adossée. TMSA est l’interlocuteur unique
représentant l’Etat pour l’ensemble des partenaires du projet Tanger Med. Le
rôle et les missions de l’agence se déclinent à travers trois volets : Autorité
portuaire, TMSA, à travers sa filiale dédiée Tanger Med Port Authority (TMPA),
assure entre autres la construction et la maintenance de l’infrastructure
portuaire, le développement des activités et des capacités du complexe portuaire,
la promotion du port Tanger Med dans son ensemble…
Depuis le lancement du port et au fil de son élargissement progressif, TMSA
veille à ériger une plateforme portuaire d’excellence connectée aux flux
mondiaux.
Le développement simultané et coordonné de la Grande Plateforme Industrielle,
lancée par le Roi Mohammed VI en 2009 et portée par Tanger Med Zones,
consolide davantage la proposition de valeur du complexe intégré.
Dans le cadre d’une convention signée entre l’Etat et TMSA, une assiette foncière
de plus de 3000 ha a été mobilisée dans un rayon de 80 km du complexe portuaire
Tanger Med afin de développer des parcs industriels modernes.
La mise en place de cette Grande Plateforme Industrielle vient ainsi confirmer la
vocation première de Tanger Med consistant au développement de l’industrie et
de l’emploi dans l’arrière-pays du port.
De par sa taille, la Grande Plateforme Industrielle s’inscrit ainsi dans une vision
de développement à long terme. Elle vise à garantir de manière durable aux
industriels désireux d’investir dans la région des espaces fonciers suffisants et
aménagés selon les meilleurs standards et benchmarks internationaux.
La Grande Plateforme Industrielle inclut :

• Tanger Free Zone (TFZ)


• Tanger Automotive City (TAC)
• TétouanShore
• TétouanPark
• Renault Tanger

TMPA : une société anonyme à conseil d’administration, dotée d’un capital de


1,250 milliards de dirhams. Ayant pour missions la gestion et le développement
des infrastructures, la coordination et l’animation de la communauté portuaire et
3
garantit la fiabilité et la performance des services assurés aux clients de la
plateforme portuaire.
Le complexe portuaire Tanger Med se compose de :

• Le port Tanger Med 1, qui comprend deux terminaux à conteneurs, un terminal


ferroviaire, un terminal hydrocarbures, un terminal marchandises diverses, et un
terminal véhicules ;
• Le port Tanger Med 2, qui comprend deux terminaux à conteneurs.
•Le port Tanger Med Passagers, qui comprend les zones d’accès et d’inspections
frontalières, les quais d’embarquements passagers et TIR, les zones de régulations,
et la gare maritime ;
• La zone franche logistique ;
• Le centre d’affaires Tanger Med ;

Plus qu’un port, le complexe Tanger Med est une plateforme logistique
intégrée, connectée à un réseau de transport multimodal (liaisons ferroviaires,
autoroutes et voie express) pour le transport des marchandises et des personnes
vers toutes les régions économiques du Royaume. L’exploitation des terminaux
comme de l’ensemble des activités portuaires est assurée dans le cadre de contrats
de concession, par des opérateurs de renommée mondiale. Le port Tanger Med
compte ainsi dans ses rangs les plus grands armements mondiaux (Maersk, CMA-
CGM, MSC…) ainsi que des leaders portuaires tels que APM TERMINALS et
EUROGATE.

4
Organigramme de gouvernance:

II- Traitement de données dans les systèmes distribués :


Systèmes distribués :
Un système distribué est un ensemble d’entités autonomes de calcul (ordinateurs,
processeurs, …) interconnectées et qui peuvent communiquer. Où les utilisateurs
ont l’impression d’utiliser un seul système. Exemples de systèmes distribués :
Serveur de fichier, Web, Calculs distribués…
Principe :
Un ou plusieurs serveurs distribuent des calculs aux machines clientes.
Un client exécute son calcul puis renvoie le résultat au serveur.
Avantages :
- Assurer la transparence (vis-à-vis la localisation des données, et pour
masquer la répartition).
- La localisation des ressources n’est pas perceptible pour l’utilisateur, les
différences matérielles et logicielles sont invisibles.
- Migration des ressources peu importe la localisation physique.
5
- Réplication des données non visible
- Pas d’interruption en cas de pannes
- Sécurité (intégrité, confidentialité, disponibilité)
- Utilisation optimisée et partage des ressources distantes.
- Utilisation optimisée des ressources disponibles.
- Robustesse du système (duplication avec sauvegarde)
Inconvénients :
- Si le serveur se plante, le système ne fonctionne plus.
- Problème au niveau du réseau -> système peut ne pas marcher.

Bases de données distribuées :


Une base de données distribuée hétérogène, est une base de données dont les
nœuds sont commandés par plusieurs ordinateurs centraux et plusieurs SGBD.
Cette méthode d’organisation permet d’atteindre des niveaux de performances
élevés.
On distingue 3 méthodes de répartition des données :
- Partition.
- Réplication.
- Hybride.
Avantages :
- Offrent un accès et un traitement rapides de l’information. Vu que
l’information est stockée dans plusieurs nœuds, elle est répartie dans le nœud
le plus proche de l’utilisateur.
- Maintenance plus aisée du système, pannes facilement localisées.
- Panne d’un nœud ne paralyse pas tout le système.
Inconvénients :
- Vulnérabilité du système contre des intrusions accroit avec la multiplicité des
nœuds.
- Coût élevé de l’architecture.
III- Benchmarking (Apache Spark vs Hadoop):
Certes, Spark et Hadoop sont tous deux des Framework Big Data. Cependant,
Hadoop est une infrastructure de données distribuées collectées à travers
plusieurs nœuds, capable de suivre et indexer les données big data stockées. En
contrepartie, même si Spark travaille également avec des données distribuées,
mais nécessite un système de stockage distribué.

Hadoop :
Hadoop est un Framework logiciel open source permettant de stocker des
données, et de lancer des applications sur des grappes de machines standards.
Cette solution offre un espace de stockage massif pour tous les types de données,
6
une immense puissance de traitement et la possibilité de prendre en charge une
quantité de tâches virtuellement illimitée. Plutôt que de devoir déplacer les
données vers un réseau pour procéder au traitement, le Framework MapReduce
permet de déplacer directement le logiciel de traitement vers les données.
Les composants d’Hadoop 2.x :

Avantages :
- Stockage et traitement de grandes quantités de données d’une façon
rapide.
- Protection des données et applications traitées contre les échecs
hardware.
- Stockage automatique de copies multiples des données.
- Stockage des Big data sur des machines standards.
- Administration minimale.
Défis/Inconvénients :
- Programmation de MapReduce non efficace pour les tâches analytiques
itératives et interactives.
- Problèmes de sécurité des données fragmentées.
Hadoop au sein de l’entreprise :
Hadoop est utilisé par de nombreuses entreprises comme solution Big Data,
dont ses usages :
• Le coût réduit des machines standard et l’archive de données.
• Capacité de traiter des algorithmes analytiques, qui aident l’entreprise à
opérer plus facilement. (Approche bac à sable)
7
• Stockage des données dans leur format original, afin d’offrir une vue brute
des données aux analystes et aux data scientistes. (Grâce aux Data Lakes)
• Moteur de recommandations (analyse de données en temps réel pour prédire
les préférences des consommateurs)
• Data store pour les transactions (objets connectés)

MapReduce :
MapReduce est la couche de traitement de données de Hadoop. Il traite de
grandes données structurées et non structurées stockées dans HDFS.
MapReduce traite également une énorme quantité de données en parallèle.
Pour ce faire, il divise le travail (travail soumis) en un ensemble de tâches
indépendantes (sous-travail). MapReduce fonctionne en divisant le traitement
en phases : Map et Reduce.
◦ Map - C'est la première phase du traitement, où nous spécifions tout le code
logique complexe. Chargée de la répartition des taches aux différentes
machines du cluster.
◦ Reduce - C’est la deuxième phase de traitement. Ici, nous spécifions un
traitement léger comme une agrégation / sommation. Réduit tous les résultats
issus des machines en une seule synthèse.
Il est composé de :
- JobTracker : Nœud qui gère les ressources et les tâches d’un système.
- JobHistoryServer : gère les tâches déjà accomplies.
- TaskTracker : Agent déployé dans chaque machine, pour les tâches
Map et Reduce.

Figure : TaskTracker et JobTracker dans un cluster.

Les différentes phases constituant l’algorithme MapReduce :


- Phase de préparation : Les nœuds contenant les données concernées
sont identifiés (stockage HDFS).
8
- Phase Map (calcul) : Pour chaque ensemble le traitement Map est
appliqué.
- Phase Shuffle : Les données sont triées et les données liées sont
regroupées pour être traitées par un même nœud.
- Phase Reduce (agrégation) : Les données sont éventuellement
agrégées.
- Phase finale : Les résultats de chacun des nœuds sont regroupés et
triés pour stockage et/ou restitution.

Figure : phases de l’algorithme MapReduce

HDFS :
Travaille en mode Maitre-esclave, chargé du stockage des données traitées.
Composé de deux types de nœuds :
◦ NameNode (Maitre) : Gère les autres nœuds esclaves. Assigne les
tâches à chaque nœud.
◦ DataNode (Esclave): déployé sur chaque machine et fournit du
stockage. Responsable des requêtes de lecture et écriture de la part
des clients.
Il existe 3 processus démons (Daemons) pour le stockage de données :
◦ NameNode : se charge de stocker les métadonnées (nombre de
blocs, nom du fichier...)

9
◦ Secondary NameNode : faire des checkpoints des métadonnées du
ficher système dans le NameNode.
◦ DataNode : démon qui s’exécute sur l’esclave.
Si le client veut écrire un fichier en HDFS, Hadoop Framework le décompose en
une petite donnée appelée bloc. La taille par défaut du bloc est de 128 Mo, que
nous pouvons configurer selon les besoins. Ensuite, les blocs sont stockés dans le
cluster de manière distribuée en parallèle dans le cluster. Hadoop Framework
reproduit chaque bloc. Et stocke ces blocs sur le cluster sur différents nœuds. Par
défaut, le facteur de réplication est 3.

YARN :

YARN (Yet Another Ressource Negotiator) fournit la gestion des ressources. C'est
le système d'exploitation de Hadoop. Il est responsable de la gestion et de la
surveillance des charges de travail, ainsi que de la mise en place de contrôles de
sécurité.
Avant YARN, Hadoop pouvait exécuter que les applications MapReduce.
Apache YARN est également une plate-forme centrale pour fournir des outils de
gouvernance des données à travers les clusters. YARN permet à plusieurs
moteurs de traitement de données tels que la diffusion en temps réel, le
traitement par lots, etc.
Composants de YARN :
◦ Gestionnaire de ressources - Il s’agit d’un composant de niveau cluster et
s’exécute sur la machine Maître. Il gère les ressources et planifie les applications
exécutées sur le dessus de YARN. Il comporte deux composants : le planificateur
et le gestionnaire d'applications.
◦ Gestionnaire de nœuds - Il s’agit d’un composant de niveau nœud. Il
fonctionne sur chaque machine esclave. Il communique en permanence avec
Resource Manager pour rester à jour

Spark :
Apache Spark est un moteur de traitement de large volume de données rapide. Il
permet d’effectuer des analyses de grande envergure par le biais de machines en
clusters, il permet aussi de traiter des données issues de référentiels de données
comme HDFS, NoSQL ou les data stores de données relationnels comme Apache
Hive.
Avantages :

10
- Vitesse de traitement (permet de lancer des programmes 100x plus
rapidement que Hadoop MapReduce in-memory).
- Facilité d’utilisation (modèle de programmation plus simple que celui
d’Hadoop)
- Développement d’applications parallèles.
- A la fois moteur de requêtes SQL, logiciel de traitement de données en
flux (Spark Streaming), et système de traitement par graphe (GraphX).
- Regroupement de plusieurs bibliothèques pour le Machine Learning.
- Capacité à fédérer de nombreux types de base de données et exécuter
des applications analytiques diverses.
Inconvénients :
- Problèmes des small files.
- Absence de support pour le traitement en temps réel.
- Pas de système propre à Spark pour la gestion des fichiers. (Repose sur
d’autres plateformes comme Hadoop, ou sur le cloud)
- Traitement itératif.
- Optimisation manuelle.

Spark vs Hadoop:
Le traitement linéaire de grands ensembles de données est l’avantage de Hadoop
MapReduce, tandis que Spark offre des performances rapides, un traitement
itératif, des analyses en temps réel, un traitement des graphes, un apprentissage
automatique, etc. Dans de nombreux cas, Spark peut surpasser Hadoop
MapReduce. Spark est entièrement compatible avec l'écosystème Hadoop et
fonctionne sans problème avec le système de fichiers distribués HDFS, Apache
Hive, etc.
Plutôt qu’un remplacement d’Hadoop, il peut être considéré comme une
alternative Spark à Hadoop MapReduce. Spark n’a pas pour vocation de
remplacer Hadoop, mais de fournir une solution unifiée et compréhensible pour
gérer différents cas d’usage Big Data.
Les deux sont des projets Apache de niveau supérieur, et sont souvent utilisés
ensemble et présentent des similitudes.

Problème des petits fichiers dans Hadoop/Spark


Un petit fichier :
Un petit fichier est un fichier dont la taille est inférieure à celle du bloc de HDFS.
Chaque fichier est représenté par un objet dans la mémoire du NameNode,
occupant 150Octets. HDFS ne peut pas traiter trop de fichiers. La lecture des
petits fichiers requiert trop de sauts d’un datanode à un autre.

11
Quelques solutions existantes :
◦ L’Archive de Hadoop : est une technique qui regroupe plus efficacement
le nombre de petits fichiers en blocs HDFS. Il est possible d'accéder
directement aux fichiers d'un fichier HAR sans le développer. La création de
HAR réduira la surcharge de stockage des données sur Namenode.
Avantage :
◦ Fichier *.har peut être utilisé comme input de
MapReduce.
Inconvénients :
◦ La création des fichiers. har engendre la création de
copies des fichiers originaux, et donc ça prend la même
quantité d’espace des fichiers originaux.
◦ Une fois le fichier. har créé, il ne peut être modifié. (Pas
d’ajout ni suppression de fichiers n’est permis)
◦ Même si le fichier. har peut être utilisé comme input de
MapReduce, ça considère tout de même l’input comme
fichiers individuels.

◦ HDFS avancé : Le modèle HDFS amélioré est basé sur les indexes. En
fonction de la dépendance des fichiers, les fichiers appartenant au même
répertoire sont intégrés dans un grand fichier et construisent en
conséquence un index pour chaque petit fichier afin de réduire le gaspillage
causé par eux.
◦ Combinaison des InputFormat de fichiers :
(CombineFileInputFormat)
Cette méthode améliore les performances du système en modifiant la classe
InputFormat. InputFormat sera modifié de manière à ce que plusieurs
fichiers soient combinés en un seul groupe. Chaque tâche du Map aura plus
d’entrées à traiter, contrairement au système existant.
Inconvénients :
▪ Devoir modifier dans le code pourra engendrer des erreurs.

IV- Big Data et IoT :


IoT :
Internet of Things, ou l’internet des objets est le vaste ensemble de périphériques
numériques fonctionnant sur des réseaux parfois internationaux. Ça inclut des
capteurs intelligents et d’autres périphériques, et permet de recueillir des
données opérationnelles de capteurs distant situés sur des plateformes
pétrolières, des données météorologiques ou de contrôler des thermostats
intelligents.

12
L’IoT offre aux organisations de nouveaux moyens innovants de gérer et de
surveiller les opérations éloignées. Il permet d’avoir des yeux et des oreilles dans
des endroits reculés, fournissant constamment des informations aux applications
et aux magasins de données. Le faible coût de l’aspect "objet" rend possible
l’observation et la gestion d’activités autrement hors de portée. Grâce à l’Internet
des objets, il est également possible de rassembler des informations sur des
événements autrefois invisibles, comme établir un lien entre les schémas
météorologiques et la production industrielle.

IoT et RoRo : (Navires Rouliers)


Pour gagner en termes de temps, de sécurité de données et d’efficacité, les
chantiers et les autorités portuaires optent pour la digitalisation et l’intégration
des technologies intelligents telles que l’IoT, le big data et le cloud… Des capteurs,
de surveillance ou autres, installés pour remonter l’information ; les véhicules
entrant/sortant, disponibilité de couloirs/places, surveillance en temps réel,
localisation et poids, température et météo …

Hadoop et IoT :
A mesure que le nombre d’objets connectés augmente, le volume de données
générées par l’internet des objets explose. Ainsi, pour pouvoir les prendre en
charge et les analyser en temps réel, il est nécessaire de s’en remettre aux outils
analytiques Big Data.
Ces outils ont la capacité de traiter rapidement les larges volumes de
données générées en continu par les appareils IoT, et d’en extraire des insights
exploitables. Le machine-Learning permet notamment de repérer des modèles de
données. Avec ces patterns, une entreprise peut notamment mettre en place la
maintenance prédictive sur ses machines industrielles.
Les experts croient bien que les entreprises peuvent profiter au maximum des
objets connectés en joignant Hadoop avec IoT. Les raisons principales pour
lesquelles Hadoop est le plus convenable de travailler avec en termes d’objets
connectés sont :
1- Hadoop est capable de stocker et traiter n’importe quel volume de données.
2- Pas de risques en ce qui concerne l’arrêt du travail à cause d’imprévus, vu
que le travail est divisé entre les machines du cluster.
3- Vu qu’il est open source et basé sur Java, Hadoop est compatible avec toute
plateforme.
4- Hadoop possède une bibliothèque dans le module des Common Utilities qui
peut détecter les erreurs.

13
V- Mise en place d’un cluster multi-nœuds de Hadoop :
OS :

• Image disque customisée


• Ubuntu/CentOS
• Espace disque de 24 GB.

Etape 1: Installation et mise à jour des prérequis


*Mise à jour des packages

sudo apt update && sudo apt upgrade

*Installation des packages java, ssh et rsync

sudo apt install openjdk-8-jdk-headless/bionic-updates -y

sudo apt install ssh


sudo apt install rsync

(Pour connaitre le dossier JAVA_HOME : which java)

*JAVA_HOME:

echo 'export JAVA_HOME=YOUR_JAVA_HOME' >> ~/.bashrc

14
Etape 2: Installation d'Hadoop

Wget
http://mirrors.fibergrid.in/apache/hadoop/common/stable/hadoop-
2.9.1.tar.gz

tar -xvf hadoop-2.9.1.tar.gz

cd hadoop-2.9.1/

echo 'export HADOOP_HOME=/home/$user/hadoop-2.9.1' >>


~/.bashrc

Etape 3: Configurations d'Hadoop


*Nous ajoutons la propriété fs.defaultFS dans HADOOP_HOME/etc/hadoop/core-
site.xml
Cette propriété fournit l'adresse HDFS pour nos commandes dfs.

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

<name>fs.defaultFS</name>

<value>hdfs://localhost:9000</value>

</property>

</configuration>

0000
*Nous créeons deux dossiers Namenode et Datanode.

mkdir /home/$user/namenode

mkdir /home/$user/datanode
15
*Modifications de HADOOP_HOME/etc/hadoop/hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

<property>

<name>dfs.namenode.name.dir</name>

<value>/home/$user/namenode</value>

</property>

<property>

<name>dfs.datanode.name.dir</name>

<value>/home/$user/datanode</value>

</property>

<property>

<name>dfs.namenode.rpc-address</name>

<value>localhost :9000</value>

</property>

</configuration>

*Modifications de HADOOP_HOME/etc/hadoop/hadoop-env.sh:

Ou plus généralement: export JAVA_HOME=${JAVA_HOME}

*Ajout des variables Hadoop:

echo 'export PATH=$PATH:/home/$user/hadoop-2.9.1/bin' >> ~/.bashrc

echo 'export PATH=$PATH:/home/$user/hadoop-2.9.1/sbin' >> ~/.bashrc 16


*Formatter le namenode:

hdfs namenode -format

Etape 4: Démarrage de Hadoop:


*Démarrage de HDFS (NameNode et DataNode)

start-dfs.sh

*Démarrage du YARN:

start-yarn.sh

*Vérification:

hdfs dfs -mkdir/myfolder

hdfs dfs -ls /

17
*Interface NameNode sur localhost : 50070/dfshealth.html :

Figure : la plateforme NameNode Information

VI- WordCount : programme dans Hadoop :


Pour tester les fonctionnalités de Hadoop, nous écrivons un programme Java qui
compte le nombre d’occurrences d’un mot dans un fichier.
Le programme est comme suit :
Dans notre classe WordCount, nous aurons 3 sections ; WordMapper, SumReducer
et le programme main.

*WordMapper

18
*SumReducer

*Main

Nous créons ensuite un dossier pour l’input où nous aurons le fichier texte sur
lequel nous allons appliquer le programme, et un autre dossier pour les classes.
Nous définissons aussi la variable HADOOP_CLASSPATH ;

Export HADOOP_CLASSPATH=$(hadoop classpath)

Echo $HADOOP_CLASSPATH pour vérifier

19
Créer un dossier dans HDFS :

Hadoop fs -mkdir /WordCountTest

Créer un sous-dossier pour l’input :

Hadoop fs -mkdir /WordCount/input

Nous pouvons voir apparaitre les dossiers sur localhost :50070 -> Utilities ->
Browse the file system

Figure : le dossier WordCountTest visualisé sur l’interface du NameNode

Mettre le fichier d’input dans le dossier :

Hadoop fs -put <fichier_input> <dossier_input_HDFS>

Hadoop fs -put ‘/home/Desktop/WordCount/input/test.txt’


‘/WordCount/input’

20
Accéder au dossier :

Cd /home/Desktop/WordCount

Compiler le code Java :

Javac -classpath ${HADOOP_CLASSPATH} -d <dossier_desclasses>


<fichier_java>

Javac -classpath ${HADOOP_CLASSPATH} -d


'/home/Desktop/WordCount/classes’
‘home/Desktop/WordCount/wordcount.java’

Mettre le fichier résultat (output) dans un fichier JAR :

Jar -cvf <nom_fichier_jar> -C <dossier_desclasses>

Jar -cvf jarfile.jar -C classes/ .

Nous avons maintenant le fichier .jar que nous avons créé dans le dossier courant.

Figure : Le test.jar créé avec succès


21
Nous exécutons le fichier .jar :

Hadoop jar <fichier_jar> <nom_delaclasse> <dossier_hdfs_input>


<dossier_hdfs_output>

Hadoop jar ‘/home/Desktop/WordCount/jarfile.jar’ WordCount


/WordCount/input /WordCount/output

Figure : les fichiers du dossier /WordCount/classes

22
Figure : les fichiers Input et Output sur localhost :50070

Figure : le fichier test.txt

23
Le résultat avec :

Hadoop dfs -cat <dossier_HDFS_output>

Figure : le résultat du programme WordCount

24
VII- Conclusion :
En résumé, nous pouvons dire que Hadoop fournit une solution Open Source pour une
gestion de données puissante tout en permettant une scalabilité via l’ajout de librairies et une
haute disponibilité grâce aux réplications de données. Toutefois, nous pouvons toujours aider à
améliorer ces services, en appliquant des programmes comme celui basique réalisé dans ce
projet du comptage de mots (WordCount) qui entre dans le traitement de MapReduce et permet
d’agréger ou trier les résultats.

Certes Hadoop est un outil efficace, pourtant le contexte de l’entreprise exige un flux de
données sous forme d’une grande quantité de fichiers de petites tailles, ce qui est toujours un
défi plutôt redoutable nécessitant un travail à part. Ceci fait partie d’une grande vision comme
continuation de ce projet avec l’intégration de l’IoT afin d’améliorer la prise de décision.

Finalement, le projet est considéré comme sujet de recherche étendu, à travers lequel j’ai eu
la chance de découvrir les enjeux du Big data dans l’entreprise et les différents outils et solutions
existantes pour le traitement de celui-ci, ainsi j’ai pu fortifier mes connaissances dans le monde
des données, et me préparer méthodiquement au travail au sein de l’entreprise.

25
VIII- Bibliographie :

• Documentation Hadoop et Spark :


http://www.opentuto.com/tag/hadoop/

https://www.researchgate.net/publication/300090328_Dealing_with_Sma
ll_Files_Problem_in_Hadoop_Distributed_File_System

https://www.lebigdata.fr/hadoop

https://www.scnsoft.com/blog/spark-vs-hadoop-mapreduce

https://openclassrooms.com/fr/courses/4297166-realisez-des-calculs-
distribues-sur-des-donnees-massives/4308656-familiarisez-vous-avec-
hadoop

https://www.xplenty.com/blog/apache-spark-vs-hadoop-mapreduce/

• Installation Hadoop :
https://www.edureka.co/blog/install-hadoop-single-node-hadoop-cluster/

https://mbaron.developpez.com/tutoriels/bigdata/hadoop/installation-
monitoring-performance-multinoeud-avec-cloudera-cdh5/

https://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-
common/SingleCluster.html

• Exécution du programme WordCount :


https://cwiki.apache.org/confluence/display/HADOOP2/WordCount

https://www.youtube.com/watch?v=OF4CzB54VYc

26

Vous aimerez peut-être aussi