Académique Documents
Professionnel Documents
Culture Documents
Hadoop Bigdata ch2
Hadoop Bigdata ch2
Data
Chapitre II: Hadoop, HDFS et
MapReduce
Dr. Saadi Leila
Plan de cours
❖Introduction Hadoop
❖Hadoop File System HDFS
❖Algorithme MapReduce
❖Yarn et MapReduce
❖Mise en œuvre dans Hadoop
❖Jobs MapReduce
❖Types des clés et valeurs
❖Efficacité
❖Entre Map et Reduce
❖MapReduce dans d’autres langages
❖Étude de cas MapReduce
Introduction Hadoop
▪ Remarque:
Cette décomposition de fichiers en blocs permet à
HDFS de stocker des fichiers de taille arbitrairement
grande. Alors que dans les systèmes de fichiers non
distribués la taille des fichiers est limitée par le
nombre de bits utilisés pour indexer chacun des
segments (4 Go pour FAT32, 16 To pour NTFS, 2 To à 8
Eo pour HFS+), dans HDFS la limite théorique est de
512 Yo (512x10¹² To). Quant au nombre maximum de
fichiers par répertoire.
Hadoop File System HDFS
Fonctionnement
▪ Un cluster HDFS est constitué de machines jouant différents rôles exclusifs entre eux:
– L’une des machines est le maître HDFS, appelé le namenode. Cette machine contient tous les noms et
blocs des fichiers, comme un gros annuaire téléphonique.
– Une autre machine est le secondary namenode, une sorte de namenode de secours, qui enregistre des
sauvegardes de l’annuaire à intervalles réguliers.
– Certaines machines sont des clients. Ce sont des points d’accès au cluster pour s’y connecter et
travailler.
– Toutes les autres machines sont des datanodes. Elles stockent les blocs du contenu des fichiers.
Hadoop File System HDFS
Fonctionnement
▪ La commande hdfs dfs et ses options permet de gérer les fichiers et dossiers :
– hdfs dfs -help
– hdfs dfs -ls [noms...] (pas d’option -l)
– hdfs dfs -cat nom
– hdfs dfs -mv ancien nouveau
– hdfs dfs -cp ancien nouveau
– hdfs dfs -mkdir dossier
– hdfs dfs -rm -f -r dossier (pas d’option -fr)
– hdfs dfs –tail <Path[filename]> afficher les dernières lignes d’un fichier
Il faut toutefois noter que les commandes mettent un certain temps à réagir, voir cette
page: ce sont des logiciels écrits en Java avec chargement de très nombreux jars.
Hadoop propose une API Java complète pour accéder aux fichiers de HDFS. Elle
repose sur deux classes principales :
▪ FileSystem représente l’arbre des fichiers (file system). Cette classe
permet de copier des fichiers locaux vers HDFS (et inversement), renommer,
créer et supprimer des fichiers et des dossiers
▪ FileStatus gère les informations d’un fichier ou dossier :
– taille avec getLen(),
– nature avec isDirectory() et isFile(),
Ces deux classes ont besoin de connaître la configuration du cluster HDFS, à
l’aide de la classe Configuration. D’autre part, les noms complets des
fichiers sont représentés par la classe Path
Hadoop File System HDFS
API Java pour HDFS
▪ Exemple:
Hadoop File System HDFS
API Java pour HDFS
▪ Compilation et lancement
Algorithme MapReduce
Présentation
▪ Le modèle de programmation MapReduce est l’un des principaux
composants du framework Hadoop. Il est utilisé pour accéder
aux données Big Data stockées au sein du Hadoop File System
(HDFS).
▪ L’intérêt de MapReduce est de faciliter le traitement
concurrent des données. Pour parvenir à cette prouesse, les
volumes massifs de données, de l’ordre de plusieurs
petabytes, sont décomposés en plusieurs parties de moindres
envergures.
▪ Ces morceaux de données sont traités en parallèle, sur les
serveurs Hadoop. Après le traitement, les données en
provenance des multiples serveurs sont agrégées pour renvoyer
un résultat consolidé à l’application.
▪ Hadoop est capable d’exécuter des programmes MapReduce écrits
dans divers langages : Java, Ruby, Python, C++…
Algorithme MapReduce
Présentation
▪ Le fonctionnement de MapReduce s’articule principalement
autour de deux fonctions : Map, et Reduce. Pour faire
simple, Map sert à décomposer et à cartographier les
données. Reduce mélange et réduit les données.
▪ Ces fonctions sont séquencées l’une après l’autre. Pour
désigner les serveurs exécutant les fonctions Map et
Reduce, on utilise les termes de Mappers et Reducers. Il
peut toutefois s’agir des mêmes serveurs.
▪ Exemple: Soient les 4 tuples suivants :
Algorithme MapReduce
Présentation
▪ Map
Cette spécification très peu contrainte permet de
nombreuses choses. En général, les paires que
reçoit Map sont constituées ainsi :
▪ la valeur de type text est l’une des lignes ou
l’un des n-uplets du fichier à traiter
▪ la clé de type integer est la position de cette
ligne dans le fichier (on l’appelle offset en bon
▪ français)
Il faut comprendre que YARN lance une instance de
Map pour chaque ligne de chaque fichier des données
à traiter. Chaque instance traite la ligne qu’on
lui a attribuée et produit des paires en sortie.
Algorithme MapReduce
Paires clé-valeurs
▪ Reduce
YARN lance une instance de Reduce pour
chaque clé différente que les instances de
Map ont produit, et leur fournit
uniquement les paires ayant la même clé.
C’est ce qui permet d’agréger les valeurs.
En général, Reduce doit faire un
traitement sur les valeurs, comme
additionner toutes les valeurs entre
elles, ou déterminer la plus grande des
valeurs. . .
Quand on conçoit un traitement MapReduce,
on doit réfléchir aux clés et valeurs
nécessaires pour que ça marche.
MapReduce et YARN
▪ Les initiales YARN désignent le terme « Yet Another Resource
Negotiator » , un nom donné avec humour par les développeurs. Cette
technologie est devenue un sous-projet de Apache Hadoop en 2012, et a
été ajoutée comme une fonctionnalité clé de Hadoop avec la mise à
jour 2.0 déployée en 2013.
▪ Avant l’ajout de YARN, Hadoop ne pouvait exécuter que des
applications MapReduce. YARN a donc beaucoup augmenté les cas d’usage
potentiels du framework. En découplant la gestion des ressources et
la planification du composant de traitement de données de MapReduce,
YARN a également permis à Hadoop de prendre en charge davantage
d’applications et de types de traitement différents.
▪ Par exemple, les clusters Hadoop sont maintenant en mesure de lancer
des applications d’analyse en temps réel, de streaming data et
requêtes interactives sur Apache Spark tout en laissant tourner
MapReduce.
MapReduce et YARN
▪ YARN combine un gestionnaire de ressources centrale avec des
containers, des coordinateurs d’application et des agents chargés de
surveiller les opérations de traitement des différents noeuds de
clusters. YARN est en mesure d’allouer les ressources aux
applications de façon dynamique en fonction de leurs besoins.
▪ Ce composant d’Hadoop propose par ailleurs plusieurs méthodes de
planification : FIFO Scheduler, Fair Scheduler, ou encore Capacity
Scheduler. En outre, la fonctionnalité Reservation System permet aux
utilisateurs de réserver des ressources de cluster en avance afin de
s’assurer que les tâches de traitement importantes soient exécutées
sans encombre.
▪ Une autre fonctionnalité notable, ajoutée avec Hadoop 3.0, est YARN
Federation. Celle-ci permet d’augmenter le nombre de noeuds qu’une
seule implémentation de YARN peut prendre en charge en connectant
différents » subclusters » équipés de leurs propres managers de
ressources.
MapReduce et YARN
▪ YARN est constitué de plusieurs composants principaux. Le gestionnaire
de ressources global (ResourceManager) a pour rôle d’accepter les
tâches soumises par les utilisateurs, de programmer les tâches et de
leur allouer des ressources.
▪ Sur chaque noeud, on retrouve un NodeManager dont le rôle de surveiller
et de rapporter au ResourceManager. On retrouve par ailleurs un
ApplicationMaster, créé pour chaque application, chargé de négocier les
ressources et de travailler conjointement avec le NodeManager pour
exécuter et surveiller les tâches.
▪ Enfin, les containers de ressources sont contrôlés par les NodeManagers
et assigne les ressources allouées aux applications individuelles.
Généralement, les containers YARN sont organisés en noeuds et
programmés pour exécuter des tâches uniquement si des ressources sont
disponibles pour ce faire. Sous Hadoop 3.0, il est toutefois possible
de créer des » containers opportunistes » pouvant être placés en
attente jusqu’à ce que des ressources soient libérées. Ce concept
permet d’optimiser l’usage des ressources.
Mise en œuvre dans Hadoop