Académique Documents
Professionnel Documents
Culture Documents
Accès sécurisé avec VPN à des services de Syst èmes dist ribués par Clust er Comput ing
Franckie RAJAONARISON
RAPPORT DE STAGE Modélisat ion et int égrat ion de données de capt eurs/compt eurs du SGE par Ines …
bouchra acht oui
Mémoire
Présenté pour l’obtention du diplôme de
MASTER EN INFORMATIQUE
Spécialité : ISIA
Par
AIDOUN Houcine
YACHI Rabia
Thème :
une approche rapide pour la réalisation des opérations des Bases de données
dans les environnements Big DATA
2.3 Les outils de Requêtage et de Scripting des données dans Hadoop ...…………………………………..29
2.4 les outils de gestion et de supervision du cluster hadoop……………………………………………..…..30
2.5 Conclusion ……………………………………………………………………………………………….....30
Chapitre 3 : Conception et l’environnement des données
3.1 Introduction ...................................................................................................................................................31
3.2 Les Opérations sur BIGDATA............................................................................................................. ……31
3.2.1 La jointure ……………………………………………………………………….…….........................31
3.2.1.1 Calcul de la jointure par MapReduce........................................................................................... 31
3.2.1.2 Stratégie de jointure........................................................................................................................... 34
3.2.1.3 Synthèse ………………………………………………..…………….……………….…………….35
4.6.1 La jointure……………………………….…………………………………………………….…......53
4.6.1.1 Explication du schéma d’exécution d’un job MapReduce ………………………………..…...54
4.6.1.2 Affichage du résultat……………………………………….…………………………………..55
4.6.1.3 Interprétation des résultats de jointure …………………………………………………………56
Introduction Générale :
Chaque jour, de plus en plus d'entreprises basculent au numérique, de plus en plus d'informations
commence à être numérisées et le volume des données publiées et stockées augmente. Ceci a conduit à l'âge de
pétaoctets des informations stockées. Une technologie d’émergence, qui gère des quantités de données de très
grandes tailles : le « Big Data ».
Selon Gill PRESS dans un article publié sur Forbes.com le 05 Mai 2013, l’explosion des données est
en effet d’abord perçue comme une menace sur la vie privée. Côté technique l’espace de stockage grandit,
mais les données s’étendent systématiquement jusqu’à le combler.
Dans les années 70, la qualité des données est enfin mise en cause : tout est stocké, il n’est plus utile
de faire le tri.
La montée en puissance des sites Facebook, Linkedin, Amazon et Twitter dans les années 2000 et
plus particulièrement à partir de 2005, révèle tout le potentiel des données publiques disponibles sur internet.
Les succès économiques des grands du web commencent alors à nourrir deux idées principales :
1- Les données brutes accumulées ont une valeur intrinsèque de par les fameuses 3 composantes en V(pour
volume essentiellement mais aussi variété et vitesse de leur production donc leur fraîcheur). Cette valeur
est monétisable et Facebook en est l’illustration par excellence !
2- Ces données brutes ont une autre valeur liée aux analyses et corrélations auxquelles elles s’offrent et
l’information qui en découle participe à la chaîne de valeur de l’entreprise.
La gestion et le stockage de données constituent pour les entreprises les principaux obstacles et défis en
matière de développement de capacités d’analyse détaillée des données[1]. La performance d’un système de
gestion de bases de données est portée essentiellement par le temps dédié au processus d’évaluation des
requêtes, surtout quand il s’agit de grandes quantités de données manipulées. La solution intuitive est
l'utilisation de la puissance de traitement, et en particulier, en exploitant le traitement parallèle.
Les opérations les plus courantes dans l'évaluation des requêtes sont la sélection, la projection et la
jointure qui combine les enregistrements de deux ensembles de données ou plus, généralement sur la base de
certaines conditions.
1
Introduction Générale
Problématique :
Composé de son système de gestion de fichiers distribués HDFS (Hadoop Distributed File System)
et d’un modèle de traitements parallèles en occurrence le paradigme MapReduce, Hadoop est une plate-
forme qui prend en charge le traitement de grands ensembles de données dans un environnement de calcul
distribué. Conçue pour offrir une évolutivité optimale, cette solution permet aux entreprises de bénéficier
d’un niveau de performances prévisible, à mesure que le volume des ensembles de données (Datasets) à
traiter s’accroît.
Ainsi, Hadoop permet aux organisations de stocker et d’analyser de grand volumes de données,
qu’elles soient structurées ou non, relationnelles ou non. Il vient compléter les plates-formes traditionnelles
d’analyse des données, telles que les bases de données relationnelles. Hadoop améliore les performances de
ces mêmes plates-formes en matière d’analyse SQL interactive des sources de données. Dès lors, Quel est
l’apport de Hadoop dans le cadre de l’analyse Big Data ?
Le Framework MapReduce est associé au système de fichiers distribués(HDFS) pour effectuer le
calcul distribué sur de grandes quantités de données, avec une répartition de la charge sur un grand nombre
de machines et avec un niveau d’abstraction quasi-totale de la couche matérielle. Les entreprises ont
commencé à utiliser MapReduce pour gérer de grandes quantités de données et quand il y a plusieurs
ensembles de données concernées, il y aura toujours un besoin de réaliser la jointure entre ces ensembles de
données. La stratégie de rendre l'information au cœur du métier de l'ANEM, nécessite de mettre en œuvre
une plateforme de gestion de données volumineuses . Durant le plan d'action 2019, la DSI de l'ANEM veux
mettre en place un prototype afin de réalisé un projet pilote basé sur la plateforme de Big-Data où Plusieurs
scénarios sont envisageables :
2
Introduction Générale
La solution proposée est de remplacer la base de données RED par un stockage orienté fichier
distribué d’une part, et d’autre part , l’implémentation des algorithmes de traitement distribué pour accélérer
le processus d’indexation et de recherche. Pour ce faire, nous allons mettre en œuvre une architecture Hadoop
qui contient un system de gestion de fichier HDFS et le système du traitement parallèle YARN (mapreduce
version 2 ) en basant sur la distribution HORTONWORKS .
3
Introduction Générale
Organisation du Mémoire :
4
CHAPITRE 1 BIG DATA
1.1. Introduction :
Les réseaux d’Internet fournissent une infrastructure pour le stockage des données et facilitent le partage
d’un très grand volume de données via divers moyens de communication. Ce dernier (le partage) est une des
principales clés de succès des applications Web.
Aujourd’hui, beaucoup d’applications Web voient leurs utilisateurs qui croître fortement pour atteindre
des centaines de millions de personnes (en 2012, Facebook atteint plus de 845 millions de membres actifs [3] ).
Face à cette forte demande, les applications Web sont confrontées à un problème de passage à l’échelle. En
particulier, les systèmes de gestion de données atteignent rapidement les limites de la charge qu’ils peuvent
traiter. Cela peut provoquer une dégradation des temps de réponses perçus par l’utilisateur, situation qu’il
n’accepte pas. Pour éviter cela, il est nécessaire d’augmenter les ressources de calcul, de stockage et de
communications utilisées par les applications exploitées.
Pour faire face à l'explosion du volume des données, on parle actuellement de pétaoctet (billiard d’octets)
voir de zettaoctet (trilliard d’octets), un nouveau domaine technologique a vu le jour : le Big Data inventé par les
géants du web, au premier rang comme Yahoo, Google et Facebook, qui ont été les tous premiers à déployer ce
type de technologie.
Ce concept apporte une architecture distribuée et scalable pour le traitement et le stockage de données. Ce
nouveau paradigme a pour principal objectif l’amélioration des performances et l’augmentation de la vitesse
d’exécution des requêtes et des traitements.
Le Big Data est le phénomène d’émergence de quantités de données hétérogènes et de très grandes tailles.
Ce phénomène est né du contexte actuel caractérisé par la généralisation de l’utilisation d’internet, des réseaux
sociaux et d’appareils générant des données.
Les données créées, répliquées et consommées chaque année dans le monde devraient passer de 898
exabyte(1018) à 6,6 zettabytes(1021) entre 2012 et 2020, soit plus de 25% par an, ce qui signifie qu’ils doublent
environ tous les trois ans [2]. La Figure 1.1 montre la croissance exponentielle des données.
5
CHAPITRE 1 BIG DATA
Littéralement Big Data est défini comme : « Grosses données » ou « grande quantité de données » ou
« données massives ». C’est une expression anglophone utilisée pour désigner des ensembles de données qui
deviennent tellement volumineux qu'ils en deviennent difficiles à traiter avec des outils classiques de gestion des
grands entrepôts de données. Il s’agit donc d’un ensemble de technologies, d’architecture, d’outils et de
procédures permettant à une organisation très rapidement de capter, traiter et analyser de larges quantités et
contenus hétérogènes et changeants, et d’en extraire les informations pertinentes à un coût accessible.
Ce phénomène est considéré comme l'un des grands défis informatiques de la décennie 2010-2020 . Il
engendre une dynamique importante de la part des spécialistes sur le terrain des technologies informatiques.
Nous pouvons citer, à titre illustratif, quelques exemples de sources de données volumineuses :
Du Web : journaux d’accès, réseaux sociaux, e-commerce, indexation, stockage de
documents, de photos, de vidéos ;
De l’internet et des objets communicants : réseaux de capteurs, journaux des appels en
téléphonie ;
Des sciences : génomique, astronomie, physique subatomique, climatologie,
De données commerciales (ex : historique des transactions dans une chaîne
d’hypermarchés) ;
De données personnelles (ex : dossiers médicaux) ;
De données publiques (open data).
6
CHAPITRE 1 BIG DATA
Le Big Data (en français "Grandes données") regroupe une famille d'outils qui répondent à une triple
problématiques : C'est la règle dite des 3V. [10]
Volume :
Le développement d’Internet conjugué à la production excessive de données par les utilisateurs, ont eu
pour effet l’accélération de l’évolution des volumes de données disponibles. Donc une augmentation
considérable des tailles de données à traiter. Si le volume est un critère majeur du BigData en revanche, son
évaluation est délicate et évolutive.
Selon Eric Schmidt, PDG de Google de 2001 jusqu’à 2011, «il existe 5 millions de téraoctets
d’informations dans le monde et nous n’en avons indexé que 170 téraoctets (c’est-à-dire beaucoup moins de
1%) ». Twitter comme exemple, génère 7 To de données chaque jour.
Vitesse :
Aujourd'hui, les applications sur Internet tels que les réseaux sociaux, produisent des données en
permanence (flux continu) qui sont difficilement maîtrisables. De tels volumes imposent un traitement
instantané de l’information pour au moins sélectionner celle qui devra être analysée et écarter le reste. Et si
l’activité impose une réaction en temps réel, il devient nécessaire de construire également des systèmes
d'analyse quasiment en temps réel. Le BigData consiste donc à analyser de gros volumes de données dans des
délais très courts qui se rapprochent du temps réel.
Variété :
La variété représente la gamme de données structurées, semi structurées et non structurées. Le
traitement de gros volumes de données structurées n'est ni récent, ni compliqué. En effet, les entrepôts de
données des banques, des assureurs, des distributeurs et des compagnies de télécommunication sont gérés par
ces derniers depuis plusieurs décennies. Le nouveau problème est de pouvoir analyser un grand volume de
données semi-structurées et/ou non structurées, comme les données sociales (les photos, vidéos, mails,
commentaires et avis des
7
CHAPITRE 1 BIG DATA
internautes sur Facebook ou Twitter par exemple) ou d’une autre provenance comme les sciences de la vie et de
la terre ou la santé...
8
CHAPITRE 1 BIG DATA
9
CHAPITRE 1 BIG DATA
par les baies de statistiques et de rapports réalisés via des outils de reporting. D’un point de vue technique, il sert
surtout à ‘délester’ les bases de données opérationnelles des requêtes pouvant nuire à leurs performances. [17]
Les organisations continueront inévitablement à utiliser des entrepôts de données pour gérer le type de
données structurées et opérationnelles qui caractérise les systèmes relationnels(SGBDR). Ces entrepôts seront
toujours fournis aux analystes avec la capacité pour analyser les données clés, les tendances, et ainsi de suite.
Cependant, avec l’avènement du Big Data, le défi pour les entrepôts de données est de réfléchir à une
approche complémentaire avec le Big Data, on pourrait concevoir un modèle hybride. Dans ce modèle les restes
de données optimisées opérationnelles très structurées seront stockées et analysées dans l’entrepôt de données,
tandis que les données qui sont fortement distribuées et non structurées seront contrôlées par Big Data (Hadoop
ou NoSQL). [3][5]
La tendance serait de stocker la grande masse de données non structurées dans une vaste gamme de
serveurs Big Data (Hadoop/MapReduce) pour tirer profit de la scalabilité et la rapidité d’analyse de Big Data,
ensuite à l’aide d’outils, ces données seront déplacées dans le modèle relationnel de sorte qu’elles peuvent être
interrogées avec le langage SQL traditionnel (SGBDR et Datawarehouse).
On peut donc interfacer Big Data avec le Datawarehouse(DW), effectivement les données non
structurées provenant de différentes sources peuvent être regroupées dans un HDFS avant d’être transformées et
chargées à l’aide d’outils spécifiques dans le Datawarehouse et les outils traditionnels de BI. [2][5]
Comme les DW traditionnels ne gèrent pas les données non structurées, Big Data peut servir comme un
moyen de stockage et d’analyse des données non structurées qui seront chargées dans les DW.
10
CHAPITRE 1 BIG DATA
Les bases de données NoSQL (No-SQL ou Not Only SQL) sont un sujet très à la mode en ce moment. Le
terme NoSQL désigne une catégorie de systèmes de gestion de base de données destinés à manipuler des bases de
données volumineuses pour des sites de grande audience. NoSql peut être interprété comme le refus du langage
11
CHAPITRE 1 BIG DATA
SQL mais au lieu de NoSQL, il serait plus juste d’utiliser l’appellation NoRDBMS (Not Only Relational
DataBase Management System). En effet, ce ne sont pas les langages SQL qui sont rejetés mais plutôt les
systèmes de gestion de base de données classiques SGBDR/RDBMS.
Les bases données NoSQL sont scalables, elles permettent de traiter les données d’une façon distribuée.
Parmi les avantages du NoSQL on trouve :
- Leurs performances ne s’écroulent jamais quel que soit le volume traité. Leur temps de réponse est
proportionnel au volume ;
- Elles se migrent facilement. En effet, contrairement aux SGBDR classiques, il n’est pas nécessaire de
procéder à une interruption de service pour effectuer le déploiement d’une fonctionnalité impactant les
modèles des données ;
- Elles sont facilement scalable. A titre d’exemple, le plus gros cluster de NoSQL fait 400 To, tandis
qu’Oracle sait traiter jusqu’à une vingtaine de Téraoctet (pour des temps de réponse raisonnable).
1.2.8.1 Les types des bases NoSQL : Il en existe 4 types distincts qui s'utilisent différemment et qui se prêtent
mieux selon le type données que l'on souhaite y stocker.
Paradigme clé/valeur : Les BD NoSQL fonctionnant sur le principe Clé-Valeur sont les plus
basiques que l'on peut trouver :
- Elles fonctionnent comme un grand tableau associatif et retourne une valeur dont elle ne
connaît pas la structure ;
- Leur modèle peut être assimilé à une table de hachage (hashmap) distribuée ;
- Les données sont simplement représentées par un couple clé/valeur ;
- La valeur peut être une simple chaîne de caractères, ou un objet sérialisé.
12
CHAPITRE 1 BIG DATA
Document : Elles sont basées sur le modèle « clé-valeur » mais la valeur est un document en format
semi-structuré hiérarchique de type JSON ou XML (possible aussi de stocker n'importe quel objet, via
une sérialisation). Elles stockent une collection de "documents" .
Colonnes : Les données sont stockées par colonne, non par ligne, on peut facilement ajouter des
colonnes aux tables, par contre l'insertion d'une ligne est plus coûteuse quand les données d'une
colonne se ressemblent, on peut facilement compresser la colonne.
C’est un modèle proche d’une table dans un SGBDR mais ici le nombre de colonnes:
- Est dynamique ;
- Peut varier d’un enregistrement à un autre, ce qui évite de retrouver des colonnes ayant
des valeurs NULL.
13
CHAPITRE 1 BIG DATA
Paradigme graphe : Ce paradigme est le moins connu de ceux de la mouvance NoSQL. Ce modèle
s’appuie Elles permettent la modélisation, le stockage et la manipulation de données complexes liées
par des relations non-triviales ou variables :
- modèle de représentation des données basé sur la théorie des graphes ;
- s’appuie sur les notions de noeuds, de relations et de propriétés qui leur sont rattachées.
décrire les arcs (relations entre les objets), ceux-ci étant orientés et disposant de propriétés
(nom, date..).
MongoDB :
La plus populaire des bases NoSQL documentaires est écrite en C et n’utilise pas de machine
virtuelle JAVA. Cette base est idéale pour débuter car elle est à la fois polyvalente et simple. [18]
Cassandra :
Cassandra est le projet open source qui découlent de la technologie de stockage Facebook. À
l’origine, elle a été écrite spécifiquement pour répondre à la croissance explosive de cette entreprise.
Cassandra est une base de données en colonnes écrite en JAVA. [18]
HBase :
Hbase est inspirée des publications de Google sur BigTable. Comme BigTable, elle est une base de
données oriente colonne. Basée sur une architecture maitre/esclave, les bases de données HBase sont
capables de gérer d’énormes quantités d’informations (plusieurs milliards de lignes par table). [5]
14
CHAPITRE 1 BIG DATA
1.3. Conclusion :
Le phénomène du Big Data s’est façonné en 2011, mais a connu une croissance fulgurante en 2012,
modifiant partiellement, mais d’une façon drastique, tous les aspects de la gestion des données. Les systèmes de
Big Data ont ainsi entrainé des changements dans les méthodes de gestion et de traitements des données, dans
les opérations d’extraction (ETL). L’apparition de ces nouveaux paradigmes a entraîné des changements majeurs
dans la manière d’aborder la conception des applications et leur rapport à la base.
Pourtant, à l’aube de 2013, aucune des technologies Big Data ne semblent être plus actives que les bases
de données NoSQL et le Framework Hadoop. Et, surtout, leur marge de progression semble aujourd’hui presque
sans limites.
Ainsi, les technologies NoSQL et Hadoop semblent être les deux moyens clés pour prendre en charge
les données non-structurées. Comme le montre Apache Hadoop, ces technologies ont souvent des racines liées à
l’Open Source, et sont entrées très récemment dans le monde commercial.
Dans le chapitre suivant, nous détaillons une technique de programmation distribuée très utilisée dans le
milieu NoSQL, en l’occurrence MapReduce du Framework Hadoop.
15
CHAPITRE 2 La Plate-forme Hadoop
2.1. Introduction :
Pour que les entreprises tirent pleinement profit de leurs informations, la gestion des données
volumineuses, la gestion de la croissance des données, l’approvisionnement du stockage et la réalisation
d’analyses « Big data » rapides et fiables constituent, des priorités.
La plate-forme émergente Hadoop est l’une des solutions récemment adoptée par les entreprises afin de
répondre à leurs besoins d’analyse Big Data. Conçue pour de gestion de données et de traitements distribués et
offrir une évolutivité optimale, cette solution permet aux entreprises de bénéficier d’un niveau de performances
prévisibles, à mesure que le volume des données à traiter/analyser s’accroît.
Hadoop est un Framework Java open source d'Apache, qui prend en charge le traitement de grands
ensembles de données dans un environnement de calcul distribué. Il fait partie du projet Apache parrainé par
l'Apache Software Fondation1. Aussi, il permet d'exécuter des applications sur les systèmes avec des milliers de
noeuds impliquant des milliers de Téra-octets. Son système de fichiers distribué facilite le transfert de données
rapide entre les nœuds .
2.2 Présentation d’Hadoop :
Le Framework Hadoop créé par Doug Cutting en 2009 (projets de la fondation Apache) est utilisé par
les principaux acteurs tels que Google, Amazon, Yahoo, Facebook, eBay et IBM, en grande partie pour des
applications impliquant des moteurs de recherche (l’analyse des requêtes) et la publicité (l’analyse des logs).
Hadoop est caractérisé par :
Robuste : si un nœud de calcul tombe, ses tâches sont automatiquement réparties sur d’autres
nœuds. Les blocs de données sont également répliqués;
Coût : il optimise les coûts via une meilleure utilisation des ressources présentées;
Souple : car il répond à la caractéristique de variété des données en étant capable de traiter
différents types de données;
Virtualisation : ne plus se reposer directement sur l’infrastructure physique (baie de stockage
coûteuse), mais choisir la virtualisation de ses clusters Hadoop.
Trois principales distributions Hadoop sont aujourd’hui disponibles : Cloudera, Hortonworks, MapR. Nous
allons présenter deux concepts fondamentaux d'Hadoop à savoir :
- HDFS un système de fichier qui répartit les données sur de nombreuses machines,
- YARN un mécanisme d’ordonnancement de programmes de type MapReduce.
16
CHAPITRE 2 La Plate-forme Hadoop
Hadoop contient de nombreux sous-projets qui relèvent de la même catégorie de l'informatique distribuée
et du traitement de données à grande échelle. L'écosystème Hadoop est composé des principaux composants
représentés dans la Figure 2.1 mais il n’est pas limité à cette liste, l'écosystème est construit à une vitesse très
rapide et de nouveaux projets lui sont ajoutés [16] .
17
CHAPITRE 2 La Plate-forme Hadoop
volume global, il suffira d'ajouter de nouveaux noeuds. On retrouvera également dans HDFS, un
service central appelé NameNode qui aura la tâche de gérer les métadonnées ;
HDFS utilise des tailles de blocs largement supérieures à ceux des systèmes classiques. Par
défaut, la taille est fixée à 64 Mo. Il est toutefois possible de monter à 128 Mo, 256 Mo, 512 Mo
voire 1 Go. L'intérêt de fournir des tailles plus grandes permettant de réduire le temps d'accès à un
bloc. Notez que si la taille du fichier est inférieure à la taille d'un bloc, le fichier n'occupera pas la
taille totale de ce bloc ;
HDFS fournit un système de réplication des blocs dont le nombre de réplications est configurable.
Pendant la phase d'écriture, chaque bloc correspondant au fichier est répliqué sur plusieurs
noeuds. Pour la phase de lecture, si un bloc est indisponible sur un noeud, des copies de ce bloc
seront disponibles sur d'autres noeuds.
Hadoop est caractérisé par une architecture maître-esclave où le maître HDFS est le NameNode et les
esclaves HDFS sont les DataNodes. Ces deux agents principaux composent ce système de fichiers :
2.2.1.1 Les composantes d’HDFS :
Le NameNode qui se caractérise par :
- Responsable de la distribution et de la réplication des blocs ;
- Serveur d’informations du Hdfs pour le client Hdfs ;
- Stocke et gère les métadonnées ;
- Comporte la liste des blocs pour chaque fichier (dans le cas de lecture) ;
- Contient la liste des DataNodes pour chaque bloc (dans le cas de l’écriture) ;
- Logs toute métadonnée et toute transaction sur un support persistant ;
- Démarre à partir d’une image d’HDFS (fsimage).
Les DataNodes qui se caractérise par :
- Stocke des blocs de données dans le système de fichier local ;
- Serveur de bloc de données pour le client hdfs ;
- Heartbeat avec le Namenode : Heartbeat est système permettant sous Linux la
mise en clusters de plusieurs serveurs pour effectuer entre eux un processus de
tolérance de panne. Le processus Heartbeat se chargera de passer un message-
aller vers le NameNode indiquant : son identité, sa capacité totale, son espace
utilisé, son espace restant.
La Figure 2.2 illustre la méthode de stockage de deux fichiers qui sont décomposé en blocs où chaque
bloc est répliqué trois (02) fois. Chaque répliqua d’un bloc est stocké dans un DataNode différent des autres
répliquas du bloc.
18
CHAPITRE 2 La Plate-forme Hadoop
19
CHAPITRE 2 La Plate-forme Hadoop
2.2.1.2 HDFS et tolérance aux fautes : Pour éviter un crash du DataNode la solution serait :
- Plus de Heartbeat (détection par le NameNode) ;
- Plus de réplication distribuée (robustesse des données) ;
Dans le cas d’un crash du NameNode (voir Figure 2.3) :
- Sauvegarde des logs de transaction sur un support stable ;
- Redémarrage sur la dernière image du hdfs.
2.2.1.3. Lecture et écriture d’un fichier dans HDFS :
Pour la lecture d’un bloc dans HDFS, le client HDFS interroge le NameNode pour récupérer la liste des
DataNodes hébergeant ses différents répliquas, le client lit ensuite le bloc du DataNode, et s’il y a un problème
avec le bloc, il lit le bloc d’un autre DataNode. Le client lit le plus proche répliqua . Voir la Figure 2.4 et 2.5 .
20
CHAPITRE 2 La Plate-forme Hadoop
2.2.1.4 Ecriture dans un fichier ou volume HDFS : Pour écrire un fichier au sein d’HDFS:
Etape 1 : On va utiliser la commande principale de gestion de Hadoop: Hadoop, avec l'option fs.
Admettons qu'on souhaite stocker le fichier data.txt sur HDFS.
Etape 2 : Le programme va diviser le fichier en blocs de 64KB (ou autre, selon la configuration) –
supposons qu'on ait ici 3 blocs.
Etape 3 : Le NameNode lui indique les DataNodes à contacter.
Etape 4 : Le client contacte directement le DataNode concerné et lui demande de stocker le bloc.
Etape5 : les DataNodes s'occuperont – en informant le NameNode – de répliquer les données entre
eux pour éviter toute perte de données.
Etape 6 : Le cycle se répète pour le bloc suivant.
21
CHAPITRE 2 La Plate-forme Hadoop
22
CHAPITRE 2 La Plate-forme Hadoop
L’exemple classique est celui du WordCount qui permet de compter le nombre d’occurrences d’un mot
dans un fichier. En entrée l'algorithme reçoit un fichier texte qui contient les mots suivants : voiture la le elle de
elle la se la maison voiture ,dans notre exemple, la clé d'entrée correspond au numéro de ligne dans le fichier et
tous les mots sont comptabilisés à l'exception du mot « se » dont le résultat de la fonction Map est donné comme
suite :
(voiture, 1) /(la,1) /(le,1) / (elle,1) / (de,1) / (elle,1) / (la,1) / (la,1) / (maison,1) / (voiture,1)
Avant de présenter la fonction Reduce, deux opérations intermédiaires doivent être exécutées pour
préparer la valeur de son paramètre d'entrée. La première opération appelée shuffle permet de grouper les valeurs
dont la clé est commune. La seconde opération appelée sort permet de trier par clé. A la différence des fonctions
Map et Reduce, shuffle et sort sont des fonctions fournies par le Framework Hadoop, donc, il n’a pas à les
implémenter. Ainsi, après l'exécution des fonctions shuffle et sort le résultat de l'exemple est le suivant :
(de, [1]) / (elle, [1,1]) / (la, [1, 1,1]) / (le, [1]) / (maison, [1]) / (voiture, [1,1]
23
CHAPITRE 2 La Plate-forme Hadoop
1. Le JobTracker : C’est un processus qui fait la liaison entre l’application (le client) et Hadoop.
Une fois que le code est soumis au cluster, le JobTracker détermine le plan d'exécution en
déterminant quels répertoires de données à traiter, assigne à des nœuds (TaskTrackers) différentes
tâches et surveille toutes les tâches durant leur fonctionnement. Si une tâche échoue, le JobTracker
relancera automatiquement la tâche, probablement sur un nœud différent, jusqu'à une limite
prédéfinie des tentatives :
- Gère l’ensemble des ressources du système ;
- Reçoit les jobs des clients ;
- Ordonnance les différentes tâches des jobs soumis ;
- Assigne les tâches aux TaskTrackers ;
- Réaffecte les tâches défaillantes ;
- Maintient des informations sur l’état d’avancement des jobs. [9]
2.2.2.3 Fonctionnement du Framework MapReduce : L’exécution d’un job MapReduce, concerne quatre
entités indépendantes :
Le client, qui soumet le job MapReduce;
Le JobTracker, qui coordonne l'exécution et le partage du job en sous tâches. Le Jobtracker est
une application Java dont la classe principale est JobTracker;
Les TaskTrackers, qui gèrent les tâches que le JobTracker lui a confiées. Les Tasktrackers sont
des applications Java dont la classe principale est TaskTracker;
Le système de fichiers distribué, qui est utilisée pour le partage de fichiers de travail entre les autres
entités (Tasktrackers). [4][5]
24
CHAPITRE 2 La Plate-forme Hadoop
25
CHAPITRE 2 La Plate-forme Hadoop
Etablit la liste des sous tâches qui seront données aux tasktrackers, et renvoi une erreur en cas de
problème (exemple : fichier de l’input introuvable) ;
Copie les ressources nécessaires pour exécuter le travail, y compris le fichier JAR (programme
MapReduce) du job, les paramètres de configuration Hadoop (hdfs.xml et core-site.xml) et les sous-
tâches. La copie se fait dans le système de fichiers du JobTracker dans un répertoire nommé d'après
l'ID du job. Le JAR du job est copié avec une réplication haute (contrôlé par le paramètre
Mapred.submit.replication dans le fichier mapred-site.xml, qui est par défaut (10), de sorte qu'il y’est
beaucoup de copies à travers le cluster pour les tasktrackers (étape 3 de la Figure 2.9) ;
Indique au JobTracker que le job est prêt pour l'exécution en appelant submitJob () sur JobTracker
(étape 4 de la figure 2.9).
2- Initialisation du job : Une fois que le jobtracker exécute le submitJob () les actions suivantes sont
déclenchées :
Création d'un objet pour représenter le job ou la tâche à exécutée et lance un processus pour garder
une trace de l'état d'avancement du job (étape 5) ;
Récupération de la liste des sous tâches (input split compute) crées précédemment lors de l’étape3,
récupération du nombre maximum de Reduce tasks crées est déterminé par la variable
Mapred.Reduce.tasks dans {$HADOOP_HOME}/conf/mapred-site.xml(étape 6).
26
CHAPITRE 2 La Plate-forme Hadoop
Les TaskTrackers envoient régulièrement des Heartbeat au JobTracker pour lui signifier leurs
disponibilités à exécuter des jobs, si le Jobtracker possède des jobs en fille d’attente il confiera la
tâche au TaskTracker ;(étape 7)
Après attribution du job au TaskTracker, il commence tout d'abord par localiser le fichier JAR (copié
lors de l’étape 3) en le copiant depuis le système de fichiers partagé. Il copie également tous les
fichiers nécessaires à partir du cache distribué par l'application sur le disque local. (étape 8)
4- Exécution du job : TaskRunner lance une nouvelle machine virtuelle Java (JVM, étape 9) pour exécuter
chaque tâche (étape 10)
2.2.2.4. Hadoop MapReduce 2.x: YARN :
YARN est une évolution de l’architecture d’Hadoop permettant de décharger le Jobtracker qui avait
tendance à cumuler trop de rôles et devenait donc complexe à maintenir et à mettre à l’échelle (scaler). Cette
remise à plat des rôles a permis aussi de découpler Hadoop de Map-Reduce et de permettre à des Framework
alternatifs d’être portés directement sur Hadoop et HDFS et non au-dessus du Map-Reduce. Cependant, une
couche de rétrocompatibilité avec les versions antérieures de Hadoop est maintenue afin de permettre une
migration en douceur pour garantir une meilleure scalabilité. A cet effet, un nouveau composant a été crée dans
l’architecture maître-esclave à deux niveaux par rapport aux architectures précédentes des versions 0.x et 1.x. Le
Yarn ressource manager, coordonne l'attribution des ressources de calcul sur le cluster;
L'idée fondamentale de YARN est de diviser les deux principales responsabilités du
JobTracker/TaskTracker en deux entités distinctes. Voir la Figure 2.11:
Un ResourceManager global (RM).
Une ApplicationMaster par application (AM).
Un NodeManager esclave par nœud (NM).
Un conteneur par application fonctionnant sur un NodeManager.
Le ResourceManager et le NodeManager forment le nouveau système générique de gestion des
applications de manière distribuée . L’ApplicationMaster par application a la responsabilité de négocier les
conteneurs de ressources appropriée du planificateur, le suivi de leur état et le suivi de leurs progrès. Du point de
vue système, l’ApplicationMaster fonctionne comme un conteneur normal.
27
CHAPITRE 2 La Plate-forme Hadoop
ResourceManager :
Le ResourceManager (RM) est le maître qui arbitre toutes les ressources disponibles du cluster et qui
permet de gérer les applications distribuées en cours d'exécution sur le système YARN. Il travaille en
collaboration avec les NodeManagers par nœud (NMs) et les ApplicationMasters par application (AMs).
NodeManagers acceptent les instructions du ResourceManager et gèrent les ressources
disponibles sur un seul nœud.
ApplicationMasters sont des entités spécifiques responsables de la négociation des ressources
avec le ResourceManager et du travail avec les NodeManagers pour démarrer les conteneurs .
Le ResourceManager a un ordonnanceur qui est responsable de l'allocation des ressources aux
différentes applications en cours d'exécution, selon des contraintes telles que les capacités de la file d'attente et
les limites d'utilisation. Le planificateur exécute sa fonction de planification basée sur les besoins des
applications.
NodeManager :
Le NodeManager (NM) est un agent qui prend en charge les nœuds de calcul individuels dans un
cluster Hadoop. Il est responsable du lancement des conteneurs des applications. Il tient au courant le
ResourceManager (RM), supervise la gestion du cycle de vie des conteneurs, surveille l'utilisation des
ressources (mémoire, CPU, disque, réseau) des conteneurs individuels, suit la santé des nœuds, gère enfin le
journal et les services auxiliaires qui peuvent être exploités par des applications différentes du YARN [25].
28
CHAPITRE 2 La Plate-forme Hadoop
Hive (Facebook) : Hive est à l’origine un projet Facebook qui permet de faire le lien entre le
monde SQL et Hadoop. Il permet l’exécution de requêtes SQL sur un cluster Hadoop en vue
d’analyser et d’agréger les données. Le langage SQL est nommé HiveQL. C’est un langage de
visualisation uniquement, c’est pourquoi seules les instructions de type “Select” sont
supportées pour la manipulation des données. Dans certains cas, les développeurs
doivent faire le Mapping entre les structures de données et Hive. (Voir figure 2.1)
Pig (Yahoo) : Apportent un modèle de développement de plus haut niveau, et donc beaucoup
plus expressif et simple à appréhender, afin de démocratiser l’écriture de traitements
MapReduce. Pig se rapproche plus d’un ETL où on part d’un ou plusieurs flux de données que
l’on transforme étape par étape jusqu’à atteindre le résultat souhaité. Les différentes étapes de
la transformation sont exprimées dans un langage procédural (Pig Latin).Pig est à l’origine un
projet Yahoo qui permet le requêtage des données Hadoop à partir d’un langage de script.
Contrairement à Hive, Pig est basé sur un langage de haut niveau Pig Latin qui permet de créer
des programmes de type MapReduce. Il ne dispose pas d’interface web, Pig se base sur HDFS
et MapReduce pour exécuter le script en backround (en arrière-plan). (Voir figure 2.1) [5]
29
CHAPITRE 2 La Plate-forme Hadoop
Apache ZooKeeper : ZooKeeper est un service de coordination des services d’un cluster
Hadoop, en particulier, le rôle de ZooKeeper est de fournir aux composants Hadoop les
fonctionnalités de distribution, pour cela il centralise les éléments de configuration du cluster
Hadoop, propose des services de clustérisassions et gère la synchronisation des différents
éléments (événements). ZooKeeper est un élément indispensable au bon fonctionnement de
Hbase. (Voir figure 2.1)
Apache Ambari (HortonWorks) : Ambari est un projet d’incubation Apache initié par
HortonWorks et destiné à la supervision et à l’administration de clusters Hadoop. C’est un
outil web qui propose un tableau de bord, cela permet de visualiser rapidement l’état d’un
cluster. [5]
Ambari dispose d’un tableau de bord dont le rôle est de fournir une représentation :
- De l’état des services ;
- De la configuration du cluster et des services ;
- De l’exécution des jobs ;
- Des métriques de chaque machine et du cluster. (Voir figure 2.1)
2.5. Conclusion
Ce chapitre a été consacré à l’étude de la plateforme Hadoop, dans lequel nous avons présenté la
plate-forme Hadoop, son mode de fonctionnement et quelques sous projets qui relèvent de la même catégorie
de l'informatique distribuée et du traitement de données à grande échelle. Le fonctionnement de Hadoop se
base sur le système de fichier distribué HDFS et un paradigme Map-Reduce de traitement de données très
volumineuses. HDFS est le système de fichiers distribués utilisé, pour le stockage des données Hadoop. HDFS
a une architecture de type maître/esclave et et est constitué d’un unique NameNode, d’un espace de nom et de
plusieurs DataNodes. HDFS se caractérise par sa grande tolérance aux fautes, sa scalabilité et le fait qu’il soit
conçu pour stocker de très gros volumes de données de manière fiable.
Le modèle MapReduce est aujourd’hui l’un des modèles de programmation parallèle les plus utilisés.
Définissant une architecture Maître-Esclave, dans laquelle s’exécute une succession d’ensembles de tâches
indépendantes, elle permet le traitement parallèle de grandes masses de données. Un des principaux avantages
de ce modèle est sa simplicité. Chaque Job MapReduce soumis par un utilisateur est une unité de travail
composée de données en entrée, des deux fonctions Map et Reduce et d’informations de configuration.
30
Chapitre 3 Conception et l’environnement des données
3.1. Introduction :
Dans le chapitre précédent, nous avons évoqué également quelques travaux traitant ce problème par
l’approche : distribuée. Dans cette partie du mémoire nous présentons les détails de notre travail qui consiste à
proposer des algorithmes de jointure, sélection et projection sur les données volumineuse, puis l’implémentation et
l’expérimentation de cet algorithme basé sur le mécanisme de Mapreduce version 2 .
3.2. Les Opérations sur BIGDATA :
3.2.1 : la jointure :
Avant d’entrée dans les spécifications et méthodes de traitement de cette opération. Envisagez d'abord de
calculer une jointure simple : q (x, y, z) = R (x,y), S (y, z). Cela peut être fait facilement dans un cycle de
communication. Dans la première étape, chaque noeud inspecte son fragment de R, et envoie chaque tuple de la forme
R (a1, b1) au serveur de destination , de même, il envoie chaque tuple S (b2, c2) au serveur . Après ce cycle de
communication, les serveurs calculent la jointure localement et rapportent les réponses. Et voila le cycle générale mais
dans la jointure n’est pas seulement pour un deux ensemble de données, il y a aussi la jointure pour plus de deux
ensemble. Et la même pour deux relation seulement l’opération de jointure va découpe sur plusieurs sous jointure et en
calcule entre eux de façon séquentiel .
3.2.1.1 Calcul de la jointure par MapReduce:
La manière d’évaluation des requêtes dans le contexte des bases de données classiques est différente de celle
utilisée dans un système MapReduce. Les méthodes classiques de réalisation des jointures ne sont plus utilisées, telles
que la jointure par hachage, boucle imbriqué et trie fusion. Les systèmes à base de MapReduce, tels que Hive ,
Hadoop et Pig s’appuient sur des nouveaux algorithmes d’évaluation des requêtes. Dans cette section, nous présentons
une description détaillée de ces algorithmes.
Jointure de deux ensembles de données (tow-way join) : L’équijointure (tow-way join)
entre deux ensembles de données R(a, b) et S(b, c) est la combinaison des tuples de R et S,
tel que R.b = S.b, avec b est la clé de la jointure. Sous MapReduce, la jointure entre R et S
est calculée par un seul job MapReduce. L’algorithme de calcul de la jointure de deux
ensembles de données (R(a, b) ►◄ S(b, c)) par MapReduce est présenté par la Figure 3.1 .
- Fonction Map : Pour chaque tuple (a, b) de R, la fonction Map produit un
couple clé-valeur (b,(R, a)) et pour chaque tuple (b, c) de S, elle produit un
couple clé-valeur (b,(S, c)). Autrement dit, une collection de processus Map
transforme chaque tuple des deux relations en un couple clé-valeur dont la clé
est la clé de la jointure et la valeur associée est le reste du tuple.
Ensuite, étiqueté chaque tuple par le nom de la relation pour que la fonction
Reduce puisse distinguer la source de données de chaque tuple.
- Fonction Reduce : Le rôle de la fonction Reduce est de combiner les tuples de
R et S ayant la même valeur de b. Ainsi, les tuples qui ont la même valeur de la
clé doivent être envoyé au même processus Reduce par le biais d’une fonction
31
Chapitre 3 Conception et l’environnement des données
de hachage. Les processus Reduce écrivent les résultats de la jointure (les tuples
(a, b, c)) dans un seul fichier de sortie.
L’algorithme de jointure sur MapReduce est défini comme suit :
Figure 3.1 : Algorithme de jointure de deux ensembles de données par Map- Reduce [34].
32
Chapitre 3 Conception et l’environnement des données
processus Map envoient chaque tuple de R et T à plusieurs processus Reduce différents, tandis que
chaque tuple de S est envoyé à un seul processus Reduce [35].
33
Chapitre 3 Conception et l’environnement des données
34
Chapitre 3 Conception et l’environnement des données
Dans cette technique, nous avons examiné la façon d'utiliser la jointure par répartition pour combiner
trois ensembles de données. La construction de jointure par répartition implique plusieurs étapes par rapport aux
autres approches de jointure, mais c'est un moyen puissant lorsque nous travaillons avec de grands ensembles de
données (où l'un des ensembles de données doit être réduit à une taille qui correspond à la mémoire).
3.2.1.3 Synthèse :
Chacune des stratégies de jointure que nous avons détaillées possède des forces et des faiblesses, alors
comment peut-on déterminer qui conviendra mieux pour les données que nous traitons ? La Figure 3.4 résume les
compromis de l'étude des stratégies de jointure dans un arbre de décision :
35
Chapitre 3 Conception et l’environnement des données
Basé sur les statistiques, telles que la taille des données relatives et la fraction de la clé de jointure
référencée (ces statistiques pourraient être recueillies sur un échantillon des entrées). Cet arbre de décision tente de
déterminer quelle est la bonne stratégie de jointure pour une circonstance donnée. Si les données ne sont pas
prétraitées, la meilleure stratégie de jointure dépend de la taille des données transférées via le réseau. Si le coût de
la diffusion dans le réseau de la table R à chaque nœud est moins cher que le transfert de R et L, alors la jointure
par diffusion doit être utilisée.
Lorsque le prétraitement est permis, la semi-jointure, avec suffisamment de partitions est le meilleur choix. Elle
offre une plus grande flexibilité puisque ses étapes de prétraitement sont insensibles à la façon dont la table de
journal est structurée, et donc adaptée à un certain nombre de tables de référence [42].
En outre, les étapes de prétraitement des deux algorithmes : jointure répartie et jointure par diffusion sont
moins coûteuses car il n'y a pas de réarrangement des données du journal.
Si l'un des ensembles de données est assez petit pour tenir dans la mémoire d'un MAPPER, la
jointure par diffusion est suffisante.
Si le volume les deux ensembles de données est important, et un ensemble de données peut
être considérablement réduits par des éléments de filtration, la mise en œuvre de semi-jointure
est adéquate.
Si nous ne pouvons pas prétraiter les ensembles de données et les tailles de ces ensembles sont
trop grandes par rapport à la mémoire cache d’un noeud de traitement, ceci signifie
l’obligation d’effectuer la jointure dans le REDUCER, alors la jointure répartie doit être
utilisée.
La stratégie que nous avons adoptée dans notre travail est la stratégie de jointure par répartition, car Il
s’agit d’une utilisation simple du paradigme MapReduce qui utilise les clés de jointure comme clés de sortie du
mappeur, peut être utilisée aussi pour tout type de jointure (intérieure, gauche, droite, complète extérieure…).
3.2.2 : La sélection : σ prédicat(R)
La sélection travaille sur R et définit une relation qui ne contient que les tuples de R qui satisfont à la
condition (ou prédicat) spécifié .La sélection : opérateur SELECT sélection d’un sous-ensemble de tuples d’une
relation qui vérifient une condition.
Exemple : aadresse=ORANdemandeur
36
Chapitre 3 Conception et l’environnement des données
Demandeur :
Lieu de
ID Nom Prénom Date de naissance Adresse
naissance
01122588 Amin Aissa 10/12/1994 Sobha Boukadir
88957444 Abdellatif sahouadj 02/02/1987 Karimia Oran
22583331 Omar naamoun 17/03/1990 Haouche gaba Oran
11005824 Slimane Rahmoun 21/08/1997 Chlef Oran
55248564 Saado noura 10/04/1995 Oued fodda Tenes
23241943 Boujeltia faiza 07/06/1992 Abou el hassen Talassa
36258713 Dermal samir 26/05/1989 Taougrite Ain merane
3.2.3 : La projection :
La projection travaille sur R et définit une relation restreinte à un sous-ensemble des attributs de R, en
extrayant les valeurs des attributs spécifiés et en supprimant les doublons.
La projection : opérateur PROJECT sélection de certaines colonnes d’une relation.
demandeur
Exemple : ID,Nom, Prénom, Adresse
Demandeur :
Lieu de
ID Nom Prénom Date de naissance Adresse
naissance
01122588 Amin Aissa 10/12/1994 Sobha Boukadir
88957444 Abdellatif sahouadj 02/02/1987 Karimia Oran
22583331 Omar naamoun 17/03/1990 Haouche gaba Oran
11005824 Slimane Rahmoun 21/08/1997 Chlef Oran
55248564 Saado noura 10/04/1995 Oued fodda Tenes
23241943 Boujeltia faiza 07/06/1992 Abou el hassen Talassa
36258713 Dermal samir 26/05/1989 Taougrite Ain merane
37
Chapitre 3 Conception et l’environnement des données
Demandeur
Id du demandeur Nom Prénom Date naissance Lieu de naissance
9F3EEA62-5840-4D2D- DJEBEL MESSAAD,M
BENALLIA SALAH 1981-12-31
BB0D-B81AF22270F4 SILA
9F3E9875-7B7E-49AD- BENABDALLA
MOHAMMED 1995-05-09 GUELMA,GUELMA
B689-B9EFE604ED58 H
9F3E6D1C-D90F-4292-
TANIRI ABDALLAH 1988-03-29 AIN SEFRA,NAAMA
A5CD-48CFD36FBD11
EF22E22A-2A9D-4ACA- OUED EL ALENDA,EL
BEBBOUKHA AFIFA 1983-11-11
9BBB-B9314EFF0050 OUED
38
Chapitre 3 Conception et l’environnement des données
Diplôme
Id du demandeur Intitulé diploma Année d’obtention
9F3EEA62-5840-4D2D-BB0D- DEUA 2004
B81AF22270F4
9F3E9875-7B7E-49AD-B689- Licence LMD 2017
B9EFE604ED58
9F3E6D1C-D90F-4292-A5CD- CAP 2017
48CFD36FBD11
EF22E22A-2A9D-4ACA-9BBB- Ingénieur 2007
B9314EFF0050
Métier
Id du demandeur Intitulé métier
EF22E22A-2A9D-4ACA- Electrotechnicien en
9BBB-B9314EFF0050 installation d'exploitation
9F3E6D1C-D90F-4292-A5CD- Animateur hygiene
48CFD36FBD11
9F3E9875-7B7E-49AD-B689- Chauffeur de direction
B9EFE604ED58
9F3EEA62-5840-4D2D-BB0D- Administrateur système
B81AF22270F4 informatique
39
Chapitre 3 Conception et l’environnement des données
40
Chapitre 3 Conception et l’environnement des données
Tout les enregistrement ayant le même valeur d’attribut de jointure seront donc stockés dans des paires ayant la
même clé, qui seront routées vers le même reducer par l’étape de shuffle & sort.
Un reducer verra donc arriver sur lui tous l’enregistrement des relations demandeur, diplome et métier de
même clé, avec lesquels il devra construire les lignes de la table de jointure qui sont associées à cette clé. C’est
donc le Reducer qui fait le Jointure. Le Reducer reçoit en fait en entrée une paire clé - liste de valeurs et la
redécomposer en une liste d’enregistrements venant des tables . Ensuite le Reducer va constituer des paire clé-
valeur composé de la clé reçue, et les enregistrements fusionnés.
Toutes les combinaisons seront produites afin de générer l’ensemble des lignes de la relation jointure. Il ne restera
plus au Reducer qu’à écrire dans un fichier de sortie selon les besoins de la suite de l’application .
3.3.2 Implémentation de la jointure multi-way :
Dans un environnement MapReduce, la jointure de plusieurs tables peut être optimisée en un seul job
MapReduce. Par exemple, Hive transforme une requête de jointure de plusieurs tables en un seul job MapReduce,
si pour chaque table le même attribut est utilisé dans les clauses de la jointure. Cependant, si les attributs de la
jointure ne sont pas les mêmes, la requête sera transformée en plusieurs jobs MapReduce.
3.4.Conclusion
Bien que le mapreduce est une solution élégant mais comme tous les nouveau approche intéressante il y a
des avantages et des inconvénients, même il y a eu des partisans et des opposants à cette idéologie.
Ce paradigme a reçu beaucoup d’attention ces dernières années pour le traitement parallèle de grosses
quantités de données. A travers le modèle de coût proposé, nous avons arrivé à estimer le coût d’exécution des
requêtes décisionnelles sur le Cloud, dans un environnement MapReduce, en termes de temps d’exécution et en
termes de coût de paiement .
41
Chapitre 4 Mise en œuvre, Test et Evaluation
4.1 .Introduction :
Dans ce chapitre, nous allons aborder la partie pratique de notre projet qui consiste à décrire l’architecture,
la conception technique et la mise en œuvre complète de l’environnement distribué Hadoop. Nous définirons les
différentes étapes d’installation et de configuration de notre cluster Hadoop ainsi que les différents tests effectués sur
des tâches MapReduce.
Dans la section suivante, on va décrire les outils et systèmes composant notre environnement de travail. (voir le
schéma ci-dessous)
Nous avons utilisé 4 machines pour créer un Cluster HADOOP qui sont caractérisées par :
VirtuellBox est un logiciel qui permet la création d’une ou plusieurs machines virtuelles simulant plusieurs
systèmes d’exploitation au sein d’un même système d’exploitation. Celles-ci, pouvant être reliées au réseau local
avec des adresses IP différentes, tout en étant sur la même machine physique qui existe réellement. Il est possible de
faire fonctionner plusieurs machines virtuelles en même temps. Dans notre cas, la virtualisation sera utilisée pour
renforcer le nombre de nodes du cluster hadoop ou nous avons ajouté 2 machines virtuelles ayant les caractéristiques
suivantes : (voir annexe 6)
42
Chapitre 4 Mise en œuvre, Test et Evaluation
CentOS (Community entreprise Operating System) est une distribution GNU/Linux principalement destinées
aux serveurs. Tous ses paquets, à l’exception du logo, sont des paquets compilés à partir des sources de la
distribution RHEL (Red Hat Entreprise Linux), éditée par la société Hat. On peut télécharger CentOS sous la forme
DVD OU CD.
43
Chapitre 4 Mise en œuvre, Test et Evaluation
HDP est la distribution open source la plus complète et gratuite à 100%, malgré qu’elle soit moins populaire
que Cloudera dans le m1onde. En janvier 2019, la fusion HDP-Cloudera a rendu la distribution comme celle la plus
utilisé dans le monde.
Le mode d’installation hybride consiste à mettre en place un cluster hadoop en deux modes différents :
Après avoir préparé les stations avec leurs paramètres, nous avons procédé à la création et configuration du
cluster HADOOP avec HA (Hight Availability) dont ses caractéristiques techniques sont indiquées ci-après.
Dans le cluster utilisé nous allons d’abord préparer les noeuds en installant et en configurant les composants
de l’Ambari (HortonWorks Distribution Apache Hadoop) en mode distribué :
4.4.1 Le mode Fully-Distributed Operation (Multi Node Cluster):
Ambari :
Host : nommé hdp-nodemaster.localdomain
@IP : 10.2.5.105
Services : HDFS, YARN, Mapréduce2, Zookeper, Ambari métrics
Namenode (machine maître):
1
https://trends.google.fr/trends/?geo=FR
44
Chapitre 4 Mise en œuvre, Test et Evaluation
45
Chapitre 4 Mise en œuvre, Test et Evaluation
En résumé, notre environnement d’évaluation est composé d’un serveur Ambari (voir annexe 1), via lequel
un cluster de 6 Nœuds a été crée dont à chaque nœud nous avons installé un Nodemanager et Datanode ainsi
qu’une machine Namenode et une machine Ressourcemanager (voir annexe 2).
Pour la sauvegarde journalière des indexes des données, nous avons mis en place un NameNode secondaire
(Secondary Namenode) dans la même machine qui contient le master Ressourcemanager.
46
Chapitre 4 Mise en œuvre, Test et Evaluation
Pour tirer profit du traitement parallèle que fournit Hadoop, nous exprimons nos requêtes comme des jobs
de MapReduce2, qui seront exécutées sur un cluster de machines. Nous allons traiter les données relatives aux
demandeurs d’emploi, leurs diplôme et métiers en appliquant les opérations de jointure, sélection et projection. Ces
données sont stockées dans un format txt , puis les transférer au notre cluster HADOOP .Les étapes effectuées pour
exécuter les requêtes sont décrites comme suite :
47
Chapitre 4 Mise en œuvre, Test et Evaluation
4.5.2-Copier les données vers une machine locale (Linux centos 7) par le biais de l’application
MobaXterm (émulateur de terminal Linux pour Windows) :
4.5.3 - Ensuite transférer ces données vers le cluster HADOOP par le client HDFS pour quelles soit
stockées de façon distribué dans les différents Datanode dont la taille de bloc est configurée à 128 Mo :
48
Chapitre 4 Mise en œuvre, Test et Evaluation
Table Diplôme :
Au cours du développement nous avons utilisé des programmes, des logiciels et des outils nécessaires à la
réalisation de l’application qui est l’implémentation de l’algorithme de jointure, sélection et projection . Parmi ces
programmes et logiciels utilisés, nous avons :
Le Système d’exploitation Centos 7 .
Version de java JVM 1.8.164
Framework Hadoop 3.0.1.0
Un éditeur Eclipse
Comme outils de programmation, nous allons travailler avec Eclipse java, pour cela nous allons
commencer par importer les packages de Hadoop.
49
Chapitre 4 Mise en œuvre, Test et Evaluation
La Figure 4.6 illustre l’environnement de développement des jobs MapReduce, nous avons notamment
utilisé les packages plus important : Package org.apache.hadoop.fs , Package org.apache.hadoop.io et Package
org.apache.mapred. Nous allons faire une brève description des principales classes de ces packages.
Package org.apache.hadoop.io : Ce package est utilisé lors de la lecture et de l’écriture des données sur
le réseau, bases de données, et les fichiers, les principales classes de ce package sont : [43]
50
Chapitre 4 Mise en œuvre, Test et Evaluation
Code source : Pour avoir les 3 Jobs relatifs à la jointure, sélection et la projection, nous allons
implémenter tout d’abord les fonctions Map et Réduce sous Eclipse IDE dont le tableau descriptif ci-
après illustre les différentes classes java déployées pour effectuer les requêtes dans un environnement
distribué :
Opération Classes Fonction
joinfiles.java Programme principal
MultipleMap1.java Transformer les données d'entrée en une série de couples clef /valeur pour
Jointure du 3 fichiers
MultipleMap2.java jointure de 3 fichiers
(voir annexe 3)
MultipleMap3.java
MultipleReducer.java Traitement de jointure de toutes les valeurs produites par l'opération MAP
selectmain.java Programme principal
selectmaper.java Transformer les données d'entrée en une série de couples clef /valeur pour
Sélection d’un fichier
sélection
(voir annexe 4)
selectreducer.java Traitement de sélection de toutes les valeurs produites par l'opération
MAP
projection.java Programme principal
Projection d’un projectionmap.java Transformer les données d'entrée en une série de couples clef /valeur pour
fichier projection
(voir annexe 5) projectionreducer.java Traitement de projection de toutes les valeurs produites par l'opération
MAP
51
Chapitre 4 Mise en œuvre, Test et Evaluation
4.5.5 Création des fichiers JAR: après avoir édité le code source des classes java mentionnées ci-dessus
relatives aux Jobs MapReduce, nous montrons par la suite les étapes de compilation desdites classes selon
les figures suivantes :
Exporter l’un des projets vers un fichier JAR;
52
Chapitre 4 Mise en œuvre, Test et Evaluation
jointure
selection
projection
Au début nous avons commencé par le premier job jointure et le deuxième selection puis projection en
effectuant les mêmes étapes sauf des changements sur le chemin et les fichiers input et bien sur le format du résultat.
Le point d’entrer d’un mapReduce est une masse de données composée de plusieurs fichiers comme indiqué
au début du présent chapitre. Ces fichiers vont être découpés en splits. Un split correspond à un bloc, donc au moins
un split par fichier (si la taille du fichier est supérieure a la taille d’un bloc du HDFS alors nous utilisons plusieurs
splits).
A l’initialisation (création de l’application Master), le nombre de maps dépend directement du nombre de
splits calculé au préalable.
4.6.1 La jointure :
Nous allons tester le job de jointure en utilisant trois fichiers (Demandeur , Diplôme et Métier) transférés au
systèm HDFS dont nous varions leurs tailles pour effectuer un ensemble test montrant le passage à l‘échelle sur le
cluster :
Pour lancer le job , il faut donner les paramètres d’entrées et les paramètres de sortie à l’aide de la ligne de
commande suivante :
53
Chapitre 4 Mise en œuvre, Test et Evaluation
54
Chapitre 4 Mise en œuvre, Test et Evaluation
Nous pouvons suivre la progression de l’execution d’une application par la plate forme web Ambari en cliquant
sur YARN puis RessourceManagerUI , dans cette page on peut consulter plusieurs informations :
Le résultat du l’execution d’un job MapReduce c’est un fichier stocké dans le système HDFS qu’on peut le
voir aussi via l’interface graphique Ambari en cliquant sur HDFS puis NameNodeUI puis cliquer sur Utilities,
comme ullstré dans la figure 4.7. Dans cette section nous pouvons télécharger le fichier résultat part-r-00000 et
également voir ses caractéristiques à savoir la taille, nombre de block .
55
Chapitre 4 Mise en œuvre, Test et Evaluation
56
Chapitre 4 Mise en œuvre, Test et Evaluation
Le graphe ci-dessus montre une croissance lente du temps d’exécution quand on augmente le volume des
fichiers. Après lecture des résultats obtenus, on peut remarquer que le critère de performance à savoir le temps de
réponse, est en faveur de l’architecture à plusieurs nœuds. L’utilisation CPU (2 coeur par machine) et mémoire
(2Go par machine) ont été distingués comme un facteur limitant durant toutes nos expérimentations, ça peut être
expliqué par le fait que le système à plusieurs nœuds applique un fort parallélisme et on maintient une scalabilité du
cluster malgré la croissance des données.
Les résultats seraient différents, si on travaillait sur des machines physiques plus performantes à mémoire
et CPU non partagés.
Un autre renseignement peut être tiré des résultats précédents, est le fait que des résultats obtenus en output
ont été conservés malgré la défaillance d’un noeud, ce qui implique une forte tolérance aux pannes, dû
principalement au principe de réplication des données, considéré comme un principe de base et un atout des
systèmes distribués tel qu’Hadoop Distributed File System.
4.6.2 La sélection :
Dans cette partie nous allons tester le job de selection en utilisant le fichier Demandeur déjà transféré dans le
test précédent au systèm HDFS dont nous varions son taille pour effectuer aussi un ensemble test montrant le
passage à l‘échelle sur le cluster :
Pour lancer le job , il faut donner les paramètres d’entrées et les paramètres de sortie à l’aide de la ligne de
commande suivante :
57
Chapitre 4 Mise en œuvre, Test et Evaluation
58
Chapitre 4 Mise en œuvre, Test et Evaluation
Le graphe ci-dessus montre la diminution du temps d’exécution quand nous augmentons le nombre de
nœuds (blocs des données) dans le cluster de calcul, après, le temps d’exécution remonte en vue de l’augmentation
du volume sans changement du nombre des nœuds(3), et va stagner quant le nombre de nœud se croisse .
Lecture des résultats obtenus, on peut remarquer que le critère de performance à savoir le temps de réponse,
est en faveur de l’architecture à plusieurs nœuds.
4.6.3 La projection :
Finalement nous allons tester le job de projection en utilisant le fichier Demandeur déjà transféré dans le test
précédent au système HDFS dont nous varions son taille pour effectuer aussi un ensemble test montrant le passage à
l‘échelle sur le cluster :
Pour lancer le job , il faut donner les paramètres d’entrées et les paramètres de sortie à l’aide de la ligne de
commande suivante :
Hadoop jar /usr/hdp/projection.jar projection.projection /tmp/Data/D1.txt /tmp/result1
59
Chapitre 4 Mise en œuvre, Test et Evaluation
D1 88.59 2 2,33
D2 177.18 2 3,08
D3 265.77 3 3,26
D4 354.37 3 4,33
D5 473.84 4 4,75
60
Chapitre 4 Mise en œuvre, Test et Evaluation
Le graphe ci-dessus montre aussi une croissance lente du temps d’exécution quand on augmente le volume
des fichiers. Après lecture des résultats obtenus, on peut affirmer que la complexité des données influe directement
sur le temps d’exécution quant le nombre de nœuds ne change pas ,ce qui indique que l’architecture à plusieurs
nœuds applique un fort parallélisme en maintiennent une scalabilité du cluster malgré la croissance des données.
Nombre de nœud
Taille des fichiers(Mo) Temps d’execution (mn)
esclaves
D1 88,59 4 1,21
D1 88,59 3 1,94
D1 88,59 2 2,33
D1 88,59 1 3,05
61
Chapitre 4 Mise en œuvre, Test et Evaluation
3,05
2,33
1,94
1,21
La déduction faite après l’exécution d’un job de projection (exemple d’un traitement), c’est bien que la
précision et le résultat obtenu est préservé malgré la défaillance d’un noeud, ce qui confirme la forte tolérance aux
pannes d’Hadoop Distributed File System.
62
Chapitre 4 Mise en œuvre, Test et Evaluation
Les résultats obtenus en output ont été conservés malgré la défaillance à un moment donné du Namenode
principal (Figure 4.13), ce qui implique une forte tolérance aux pannes, dû principalement au principe de la haute
disponibilité, considéré comme un principe de base indispensable et un atout des systèmes distribués tel qu’Hadoop
Distributed File System.
4.9. Conclusion :
Dans ce chapitre nous avons commencé par montrer les caractéristiques et détails de la conception de
l'environnement de travail, puis nous avons exposé les différentes classes java de notre application en décrivant leurs
utilités. Nous avons ensuite présenté les résultats de l'expérimentation de notre outil suivis par leurs interprétations.
Les tests et les expérimentations effectués dans ce chapitre ont amené à la conclusion des points suivants :
L’augmentation du nombre de nœuds influe sur l’exécution des programmes MapReduce2, réduit son temps
d’exécution et en conséquence la latence est minimisée.
La réplication des données garantit un niveau de fiabilité pour le système Hadoop en cas de défaillance d’un
de ses nœuds et en conséquence assure la disponibilité du système.
La flexibilité d’une telle architecture distribuée en augmentant le nombre de nœuds des clusters reflète le
passage à l’échelle et assure l’extensibilité.
63
Conclusion générale
Conclusion générale :
Notre projet a fait l’objet d’une étude des nouvelles technologies du Big Data, Nous nous sommes intéressés
au Framework Hadoop. La partie applicative consistait à un déploiement d’Hadoop avec ses composants YARN et
HDFS dans un environnement distribué à base de la distribution Hortonworks.
Les différents systèmes de gestion des données conçus ces dernières années, se distinguent à base de trois facteurs
principaux : La performance, caractérisée par la latence et le débit, l’extensibilité (élasticité ou scalabilité) et la
disponibilité.
La mise en oeuvre d’un cluster Hadoop avec ses composants, l’exécution de plusieurs jobs MapReduce2 sur
des fichiers HDFS dans des architectures à plusieurs nœuds et l’évaluation des différents statistiques des opérations
effectuées nous ont permis d’approuver l’impact de la distribution et le parallélisme sur l’efficacité des systèmes
gérant de grands volumes de données en réduisant la latence et en garantissant et une meilleure extensibilité.
D’un autre côté, on a pu constater, que la réplication des données sur les différents nœuds du réseau garanti
un certain niveau de disponibilité du système même en cas de défaillance d’un ou plusieurs noeuds du réseau.
Perspectives :
Le domaine de recherche reste très ouvert aux différents travaux et différents tests dans des architectures
fortement distribuées, néanmoins le futur projet qui se voit très intéressant, est la mise en œuvre d’un cluster Hadoop
sur des machines physiques puissantes dans une plateforme High-Performance-Computing (HPC) pour pallier les
problèmes du Hardware qu’on a rencontré. Aussi, la démonstration des points forts d’Hadoop à savoir la
performance, la latence et l’extensibilité en appliquant plusieurs tests sur des données très volumineux de plusieurs
téraoctets sur des centaines de noeuds voire des milliers de nœuds peut faire l’objet d’autres prochains sujets de
recherche.
64
Annexe 1 Installation de l’Ambari
yum update –y
65
Annexe 1 Installation de l’Ambari
Installation wget
Important sur ensemble des hosts pour le téléchargement de l’agent et installation à distance
Installation nano :
66
Annexe 1 Installation de l’Ambari
67
Annexe 1 Installation de l’Ambari
68
Annexe 1 Installation de l’Ambari
69
Annexe 1 Installation de l’Ambari
Lorsque l'on réinstalle un serveur Linux et que l'on établit une nouvelle connexion SSH vers celui-ci, on se
retrouve souvent avec ce message d'erreur : Warning: remote host identification has changed ! Cela signifie
que les clefs SSH ont changé.
Suppression de la clé publique du fichier known_hosts au niveau du hdp-nodemaster et redistribuer la clé
public sur la machine mise à jour.
Installation NMON :
yum install dnf
dnf install epel-release
dnf install nmon
Installation jps :
yum list java*devel*
yum install java-1.8.0-openjdk-devel.x86_64
Installation ambari :
https://www.linuxhelp.com/how-to-install-ambari-server-on-centos-7
Pour installer Ambari Server on CentOS 7 :
Le projet Apache Ambari vise à simplifier la gestion de Hadoop en développant un logiciel permettant de
provisionner, de gérer et de surveiller les clusters Apache Hadoop. Ambari fournit une interface utilisateur Web
de gestion Hadoop intuitive et facile à utiliser, renforcée par ses API RESTful. C'est vraiment simple d'installer
Ambari Server sur CentOS 7 et ce tutoriel couvre le même processus.
Installing Ambari :
Commençons maintenant ce processus en ajoutant le référentiel public pour Ambari. Utilisez la commande
suivante dans le même but.
[root@localhost ~]# wget -nvhttp://public-repo-
1.hortonworks.com/ambari/centos7/2.x/updates/2.7.3.0/ambari.repo -O /etc/yum.repos.d/ambari.repo
Une fois que le repolist est ajouté, vous devez mettre à jour le repolist que vous venez d'ajouter. Exécutez la
commande suivante pour effectuer cette action.
70
Annexe 1 Installation de l’Ambari
* base: centos.excellmedia.net
* extras: centos.excellmedia.net
* updates: centos.excellmedia.net
repolist: 11,648
Une fois les étapes ci-dessus terminées, vous devez installer Ambari Server à partir du référentiel
public Ambari :
[root@localhost ~]#
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: centos.excellmedia.net
* extras: centos.excellmedia.net
* updates: centos.excellmedia.net
Resolving Dependencies
--> Running transaction check
71
Annexe 1 Installation de l’Ambari
Installed:
ambari-server.x86_64 0:2.2.2.0-460
Dependency Installed:
Complete!
Ensuite, exécutez la commande setup pour configurer votre serveur Ambari, votre base de données, votre
JDK, votre LDAP et d’autres options.
72
Annexe 1 Installation de l’Ambari
Setup ambari-server
Checking SELinux...
Checking JDK...
[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[2] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7
========================================================================
======
To download the Oracle JDK and the Java Cryptography Extension (JCE) Policy Files you must
accept the license terms found at
73
Annexe 1 Installation de l’Ambari
Do you accept the Oracle Binary Code License Agreement [y/n] (y)?
Completing setup...
Configuring database...
Configuring database...
========================================================================
======
74
Annexe 1 Installation de l’Ambari
[2] - Oracle
[3] - MySQL
[4] - PostgreSQL
========================================================================
======
Username (ambari):
Checking PostgreSQL...
Configuring PostgreSQL...
Restarting PostgreSQL
75
Annexe 1 Installation de l’Ambari
ambari-admin-2.2.2.0.460.jar
......
Starting ambari-server
76
Annexe 1 Installation de l’Ambari
/etc/ambari-server/conf/ambari.properties
77
Annexe 2 Installation de Cluster HADOOP
78
Annexe 2 Installation de Cluster HADOOP
79
Annexe 2 Installation de Cluster HADOOP
80
Annexe 2 Installation de Cluster HADOOP
81
Annexe 2 Installation de Cluster HADOOP
82
Annexe 3 Les classes MapReduce du jointure
package hdp;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.MultipleInputs;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
}
public int run(String[] args) throws Exception {
Configuration c=new Configuration();
c.set("mapred.textoutputformat.separator",",");
String[] files=new GenericOptionsParser(c,args).getRemainingArgs();
Path p1=new Path(files[0]);
Path p2=new Path(files[1]);
Path p3=new Path(files[2]);
Path p4=new Path(files[3]);
FileSystem fs = FileSystem.get(c);
if(fs.exists(p4)){
83
Annexe 3 Les classes MapReduce du jointure
fs.delete(p4, true);
}
Job job = new Job(c,"Multiple Job");
job.setJarByClass(joinfiles.class);
MultipleInputs.addInputPath(job, p1, TextInputFormat.class, MultipleMap1.class);
MultipleInputs.addInputPath(job,p2, TextInputFormat.class, MultipleMap2.class);
MultipleInputs.addInputPath(job,p3, TextInputFormat.class, MultipleMap3.class);
job.setReducerClass(MultipleReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
FileOutputFormat.setOutputPath(job, p4);
boolean success = job.waitForCompletion(true);
/*return success?0:1;*/
System.exit(success ? 0 : 1);
return 0;
}
package hdp;
import java.io.IOException;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class MultipleMap1 extends Mapper<Object,Text,Text,Text>
{
Text keyEmit = new Text();
Text valEmit = new Text();
public void map(Object k, Text value, Context context) throws IOException,
InterruptedException
{
String line=value.toString();
String[] words=line.split(",");
keyEmit.set(words[0]);
valEmit.set(words[1]+" "+words[2]+"/*");
context.write(keyEmit, valEmit);
84
Annexe 3 Les classes MapReduce du jointure
}
}
package hdp;
import java.io.IOException;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class MultipleMap2 extends Mapper<Object,Text,Text,Text>
{
Text keyEmit = new Text();
Text valEmit = new Text();
public void map(Object k, Text v, Context context) throws IOException,
InterruptedException
{
String line=v.toString();
String[] words=line.split(",");
keyEmit.set(words[0]);
valEmit.set(words[1]+" "+words[2]+"/#");
context.write(keyEmit, valEmit);
}
}
85
Annexe 3 Les classes MapReduce du jointure
package hdp;
import java.io.IOException;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
package hdp;
import java.io.IOException;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
86
Annexe 3 Les classes MapReduce du jointure
for(Text value:values)
{
String valeur[] = t.toString().split("/");
if(valeur[1].equals("*"))
demandeur = demandeur + valeur[0]+',';
if(valeur[1].equals("#"))
diplome = diplome + valeur[0]+' ';
if(valeur[1].equals("&"))
metie = metie + valeur[0]+' ';
}
diplome=diplome+',';
valEmit.set(demandeur+diplome+metie);
context.write(key, valEmit);
}
}
87
Annexe 4 Les classes MapReduce du selection
package selectcondition;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
my_client.setConf(job_conf);
88
Annexe 4 Les classes MapReduce du selection
try {
// Run the job
JobClient.runJob(job_conf);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package selectcondition;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.*;
89
Annexe 4 Les classes MapReduce du selection
package selectcondition;
import java.io.IOException;
import java.util.*;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.*;
90
Annexe 5 Les classes MapReduce du projection
package projection;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
import org.apache.hadoop.util.GenericOptionsParser;
if(fs.exists(p2))
fs.delete(p2, true);
91
Annexe 5 Les classes MapReduce du projection
my_client.setConf(job_conf);
try {
// Run the job
JobClient.runJob(job_conf);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package projection;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.*;
92
Annexe 5 Les classes MapReduce du projection
package projection;
import java.io.IOException;
import java.util.*;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.*;
}*/
output.collect(key, null);
93
Annexe 6 Configuration VM Centos + installation
Etape 2 : crée une nouvelle machine de type Linux version RedHat (64-bit)
94
Annexe 6 Configuration VM Centos + installation
95
Annexe 6 Configuration VM Centos + installation
96
Annexe 6 Configuration VM Centos + installation
97
Annexe 6 Configuration VM Centos + installation
Etape 9 : une fois la machine virtuelle hdp-node03 installée, veuillez cloner cette
dernière et renommé la : hdp-node04
Sélection le type de clone : intégrale pour créer une deuxième copie de la machine
virtuelle :
Clone en cours ….
99
Annexe 6 Configuration VM Centos + installation
100
Annexe 6 Configuration VM Centos + installation
101
Références bibliographiques
Références bibliographiques :
Livres électroniques :
[1] Olivier BENDAVID, Bi in the Cloud, 18/06/10.
[2] Big data application and archetecteure; de himanshu et Nitin Sawant, Apress Berkely, CA, USA ©2013
[3] Big Data for Dummies, Copyright © 2013 by John Wiley , Hoboken New Jersey , Canada
[4] Hadoop The Definitive Guide.3rd.Edition, May 2012.Edition OReilly.
Thèse :
[5] Mekideche Mounir, Conception et implémentation d’un moteur de recherche à base d’une architecture
Hadoop (Big Data), Avril 2015.
PDF :
[6] Benjamin Renaut, Hadoop/Big Data, Université de Nice Sophia-Antipolis, 114p, 2013-2014.
[7] Bernard ESPINASSE, Introduction aux systèmes NoSQL (Not Only SQL), Ecole Polytechnique
Universitaire de Marseille, 19p, Avril 2013.
[8] Pierre Nerzic février-mars 2019 , France
[9] Jonathan Lejeune, Hadoop : une plate-forme d’exécution de programme Map-reduce, École des Mines de
Nantes, 83p, Janvier 2015.
[10] M.CORINUS, T.Derey, J.Marguerie, W.Techer, N.Vic, Rapport d’étude sur le Big Data, SRS Day, 54p,
2012.
Sites internet :
[11] http://www.journaldunet.com/solutions/analytics/big-data, consulté le1/03/ 2015.
[12]http://webcache.googleusercontent.com/search?q=cache:2DfXDe1Z_mEJ:www.aubay.com/fileadmin/us
er_upload/Publications_FR/Regard_Aubay__Big_Data_Web.pdf+&cd=1&hl=ar&ct=clnk&gl=dz,consulté
le 2/03/2015.
[13]http://webcache.googleusercontent.com/search?q=cache:GTE9JlAU6mAJ:www.bigdataparis.com/guide/
Guide_du_Big_Data_2013_2014.pdf+&cd=1&hl=ar&ct=clnk&gl=dz, consulté le3/03/2015.
[14]http://blog.ippon.fr/2013/05/14/big-data-la-jungle-des-differentes-distributions-open-source-hadoop/,
consulté le15/04/2015.
[15] http://mbaron.developpez.com/tutoriels/bigdata/hadoop/introduction-hdfs-map-reduce/, consulté le
27/04/ 2015.
[16] http://www.redsen-consulting.com/2013/06/big-data/, consulté le 9/06/ 2015.
[17] http://fr.wikipedia.org/wiki/Entrep%C3%B4t_de_donn%C3%A9es,consulté le 9/04/2015.
[18] http://www.technologies-ebusiness.com/langages/les-bases-no-sql, consulté le. 6/06/2015
[19] http://fr.wikipedia.org/wiki/Hadoop, consulté le 10/04/2015.
[20]http://blog.ippon.fr/2013/05/14/big-data-la-jungle-des-differentes-distributions-open-source-hadoop/,
consulté le 10/04/2015.
102
Références bibliographiques
[21]http://www.devx.com/opensource/exploring-the-hadoop-distributed-file-system-hdfs.html,consulté le
25/04/2015.
[35] F.N. Afrati and J.D. Ullman. Optimizing joins in a map-reduce environment. In EDBT’10, Proceedings
of the 13 th International Conference on Extending Database Technology, pp. 99-110, Lausanne,
Switzerland, (2010).
[41] Blanas, S., et al. A comparison of join algorithms for log processing in mapreduce. in Proceedings of the
2010 ACM SIGMOD International Conference on Management of data. 2010. ACM.
[42]. Lin, J. and C. Dyer, Data-intensive text processing with MapReduce. Synthesis Lectures on Human
Language Technologies, 2010. 3(1): p. 1-177.
[43] S.NITIN and Others. Big data application and archetecture 22/12/2013.
[44]. M. MEKIDECHE. Conception et implementation d’un moteur de recherché a base d’une architecture
hadoop (big data). Master’s thesis, Université d’Oran 1 Ahmed Ben Bella, 03/2015.
103