L'essentiel de Hadoop

Appréhender les principes de base

Testez gratuitement nos 1300 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Assimilez les notions essentielles du paradigme MapReduce et notamment, le rôle des fonctions map() et reduce() lors du parcours des données.
06:53

Transcription

Maintenant que nous avons abordé le stockage des données sur Hadoop, et notamment dans l'HDFS, nous allons voir comment traiter ces données et cela grâce au paradigme MapReduce. MapReduce est un paradigme, donc créé par Google, c'est un paradigme de programmation, c'est-à-dire que c'est une nouvelle façon de concevoir et de penser à proprement parler les algorithmes. Vous connaissez déjà certainement les paradigmes de programmation fonctionnelle ou de programmation orientée objet, par exemple, ou même, le paradigme de programmation évènementiel qui consiste à réagir et à se déclencher des actions en fonction d'évènements sur lesquels on écoute. Aujourd'hui, on va parler du paradigme MapReduce. Le paradigme MapReduce est adapté uniquement pour le traitement des très fortes volumétries de données, c'est-à-dire pour réaliser un traitement, une agrégation, à partir de beaucoup de données en entrée pour obtenir des données en sortie. C'est donc un paradigme qui permet uniquement de faire des traitements, et ce, de façon parallélisée, de façon distribuée, sur des fortes volumétries de données. Pour illustrer ce paradigme, nous allons prendre un exemple classique, le « word count ». Le word count, c'est le fait de vouloir compter le nombre d'occurrences de chaque mot, dans un ou plusieurs textes. Ainsi, on va vouloir passer de l'entrée ici présente à gauche, où on a un ensemble de mots sur plusieurs lignes, donc « A, B, C » en première ligne, « C, A, C » en seconde ligne, « C, B, B » en troisième ligne. Pour l'exemple, on a pris des mots qui consistent juste en une lettre, pour donner l'exemple. Et on va vouloir avoir en sortie, simplement le nombre d’occurrences de chaque mot. « A » apparaît deux fois dans ce corpus, « B » trois fois, et « C » quatre fois. Vous allez me dire, c'est quelque chose qui est réalisable très facilement, donc avec un paradigme très classique, par exemple avec de la programmation fonctionnelle. Et vous saurez faire certainement un programme en programmation fonctionnelle, dans n'importe quel langage, qui permet de réaliser le passage de cette entrée à gauche à cette sortie à droite. Cependant, il faut bien comprendre ici qu'on est adapté à du Big Data, à des très fortes volumétries de données. Aussi, on ne veut pas juste passer de cette entrée à gauche à cette sortie à droite, mais on veut également surtout que l'entrée puisse avoir un nombre très fort, voire même illimité, entre guillemets, de données, de lignes à proprement parler, et que le nombre de mots, de la même façon, ne soit pas restreint. Autant il peut être facile, en programmation fonctionnelle, d'avoir beaucoup de lignes en entrée, à la rigueur ça consomme assez peu de mémoire, autant il va être difficile de garder un compteur pour chaque mot, si le nombre de mots n'est pas déterminé à l'avance, et notamment s'il peut dépasser plusieurs centaines de millions. Aussi, ce paradigme est là pour résoudre ce genre de problèmes. Pour cela, on va décomposer le problème en plusieurs étapes. La première étape, de façon assez classique, va être de décomposer l'entrée, donc de réaliser un « Split ». Cette opération de Split va nous permettre notamment ici dans le cadre d'un fichier, de le lire ligne par ligne. Aussi, au lieu d'une entrée de trois lignes, on va se retrouver avec trois entrées d'une ligne. C'est relativement simple, le framework Hadoop le fait directement à notre place. Ensuite, on va faire donc la première étape du MapReduce, c'est-à-dire le « Map ». Donc, cette fonction Map, que l'on va appeler, consiste à traiter la ligne pour en ressortir les informations dont on a besoin, c'est-à-dire de juste la retraiter différemment. Donc, le Map va à chaque fois prendre une ligne en entrée et va ressortir zéro, un, ou plusieurs couples de clé-valeur correspondant à l'information que l'on veut extraire. Ici, donc on va appliquer le Map et on va avoir pour la première ligne par exemple, « A, B, C », on va ressortir une clé-valeur, « A » une fois, « B » une fois, « C » une fois. Par la suite, on va faire un « Shuffle and Sort ». Ce Shuffle and Sort est central dans le MapReduce. Il considère en effet, le paradigme MapReduce, qu'on a besoin, pour faire une agrégation, de trier, de regrouper les différents résultats à un moment donné. C'est le pivot à proprement parler de notre MapReduce, c'est ce qui distingue l'opération de Map de l'opération de Reduce. Ce Shuffle and Sort va donc trier et regrouper par clé toutes les entrées qui ont été ressorties par le Map. Ainsi, quand on applique le Shuffle and Sort sur la sortie du Mapper, on va avoir regroupé toutes les entrées concernant la clé A, puis regroupé toutes les entrées concernant la clé B, et enfin toutes les entrées concernant la clé C, qui sont regroupées de la même façon. Alors, on peut appliquer le Reducer, qui est souvent donc une opération d'agrégation. Ici, par exemple, ça va consister, soit à compter le nombre d'entrées, soit à faire la somme des valeurs, ce qui revient au même, puisque nos valeurs sont systématiquement « 1 ». Ainsi, pour passer de « A, 1, A, 1 » à « A, 2 » on va faire le Reducer, qui va donc faire, « A », « 1+1 » ça fait « 2 », pareil pour les trois lignes « B, 1 » il va conclure « B, 3 ». Le MapReduce s'appuie donc sur ces quatre opérations. Le Split, c'est-à-dire la décomposition de l'entrée en plusieurs clés-valeurs d'entrée, le Map, c'est-à-dire l'extraction des données nécessaires dans chacune des entrées, le Shuffle and Sort, c'est-à-dire le tri et le regroupement par clé, et le Reducer, l'agrégation des données afin d'obtenir le résultat voulu. Il est à noter qu'il est parfois nécessaire, et possible dans tous les cas, de réaliser plusieurs Map and Reduce, qu'on va enchaîner afin de pouvoir répondre à la problématique posée. On remarque que chacune de ces étapes est limitée en mémoire, est totalement « stateless », n'est pas dépendante d'un état, et cela permet donc de paralléliser chacune de ces étapes sur le cluster de traitements et de réaliser cette opération quelle que soit la volumétrie de données, c'est-à-dire que même si l'entrée du MapReduce fait plusieurs centaines de milliards de lignes, notre MapReduce fonctionnera toujours de la même façon, quelles que soient les ressources à notre disposition.

L'essentiel de Hadoop

Mettez en pratique les concepts spécifiques à Hadoop. Abordez l'HDFS pour le stockage, les MapReduce pour le traitement, ainsi que la base de données NoSQL d​e Hadoop : HBase.

3h43 (42 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
HBase HBase 1.2
Spécial abonnés
Date de parution :31 mars 2017

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !