CH 1
CH 1
CH 1
Programme
• Chapitre 1. Hadoop
• Chapitre 2. Spark
• La notion de Big Data est un concept s'étant popularisé en 2012 pour traduire
le fait que les entreprises sont confrontées à des volumes de données à traiter
de plus en plus considérables et présentant un fort enjeux commercial et
marketing.
4
Hadoop : Présentation
• Apache Hadoop est un framework open source conçue pour réaliser d'une
façon distribuée des traitements sur des volumes de données massives.
Hadoop : Présentation
HDFS
10
HDFS : Architecture
• Une architecture de machines HDFS (aussi appelée cluster HDFS) repose sur
trois types de composants majeurs :
NameNode : est un service central (appelé aussi maître) qui s'occupe de gérer
l'état du système de fichiers. Il maintient l'arborescence du système de fichiers
et les métadonnées de l'ensemble des fichiers et répertoires d'un système
Hadoop. Le Namenode a une connaissance des Datanodes dans lesquels les
blocs sont stockés.
HDFS : Architecture
Datanode: contient les blocs de données. Les Datanodes sont sous les ordres
du Namenode et sont surnommés les Workers. Ils sont donc sollicités par les
Namenodes lors des opérations de lecture et d'écriture.
12
MapReduce
16
MapReduce : Présentation
MapReduce : Présentation
18
L'architecture Hadoop
19
MRv1 : Présentation
• Comme pour HDFS, la gestion des tâches de Hadoop se basait jusqu’en version
2 sur deux serveurs :
Le JobTracker, qui va directement recevoir la tâche à exécuter (e.g. un .jar
Java), ainsi que les données d'entrées (nom des fichiers stockés sur HDFS) et le
répertoire où stocker les données de sortie (toujours sur HDFS). Il y a un seul
JobTracker sur une seule machine du cluster Hadoop. Le JobTracker est en
communication avec le NameNode de HDFS et sait donc où sont les données.
MRv1 : Présentation
22
MRv2 : YARN
• YARN permet aux utilisateurs de lancer des jobs MapReduce sur des données
présentes dans HDFS, et de suivre (monitor) leur avancement, et récupérer les
messages (logs) affichés par les programmes.
MRv2 : YARN
MRv2 : YARN
• Le Resource Manager définit des containers, qui sont des unités de ressources
présents sur un nœud. La distribution du traitement va s'opérer sur des
containers sur des nœuds.
25
Programmation Hadoop
26
Programmation Hadoop
• Créer un nouvel objet Hadoop Job, qui désigne une tâche Hadoop.
• Utiliser cet objet Job pour informer Hadoop du nom de nos classes Driver, MAP
et REDUCE.
• Utiliser le même objet pour informer Hadoop des types de données utilisés
dans notre programme pour les couples (clef;valeur) MAP et REDUCE.
• Informer Hadoop des fichiers d'entrée/sortie pour notre tâche sur HDFS.
• Enfin, utiliser l'objet Job créé précédemment pour déclencher le lancement de
la tâche via le cluster Hadoop.
• Avant toute chose, on créé dans notre main un nouvel objet Configuration
Hadoop:
• Il faut ensuite indiquer à Hadoop quels sont les types de données que l'ont
souhaite utiliser pour les couples (clef;valeur) de nos opérations map et
reduce.
• Dans le cas de notre compteur d’occurrences de mots, on souhaite utiliser des
chaînes de caractères pour les clefs (nos mots) et des entiers pour nos
occurrences.
Le type keyin est notamment utile lorsqu'on utilise des fonctionnalités plus
avancées, comme la possibilité d'effectuer plusieurs opérations MAP les unes à
la suite des autres, auquel cas notre opération map recevra en entrée des
couples (clef;valeur).
Par défaut, cependant, la clef d’entrée lors de la lecture de fichiers texte par
Hadoop est constituée du numéro de ligne. Dans notre cas, nous n'utiliserons
pas cette clef; on utilisera donc le type Java Object comme type keyin, ce qui
évite un cast inutile.
41
Bibliography