Le 14 septembre 2017, nous avons publié une version actualisée de notre Politique de confidentialité. En utilisant video2brain.com vous vous engagez à respecter ces documents mis à jour. Veuillez donc prendre quelques minutes pour les consulter.

L'essentiel de Hadoop

Découvrir la fonction map()

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Découvrez le rôle de la fonction map() et les contraintes à prendre en compte lors de son développement.
05:48

Transcription

Maintenant que nous avons vu le principe général du Map Reduce, attardons-nous sur la fonction Map. En effet, nous avons dit que le split se fait automatiquement par le framework Hadoop en décomposant directement l'entrée ou les entrées en fonction de leur format en plusieurs petites entrées. Ainsi, si c'est un fichier par exemple par lignes, si c'est une base de données, chaque ligne de la base de données, etc. La fonction Map va donc prendre à chaque fois une entrée, une ligne donc de notre fichier qui se retrouvera sous la forme de clé-valeur. Alors, ici, dans notre exemple, on voit A, B, C. Ce qui assez bizarre, ça ne correspond pas à une clé-valeur. En fait, le framework Hadoop nous passerait directement en clé le numéro de la ligne dans le fichier, c'est-à-dire 1 pour la première ligne et la valeur, c'est-à-dire la chaîne de caractères A, B, C à proprement parler, comme valeur. Ainsi on aurait deux C A C et trois C B B, par exemple comme entrée. Chaque fonction Map va s'appliquer sur une entrée, donc, on a un appel de la fonction Map pour la ligne A, B, C, un appel de la fonction Map pour la ligne C, A, C et un appel de la fonction Map pour la ligne C, B, B. La fonction Map, donc, doit décomposer cette entrée avec les valeurs. Donc, ici ,elle ignore totalement le numéro de la ligne, la clé. Elle va s'occuper de la valeur, réaliser un split dessus à proprement parler pour la découper et à chaque fois lui accoler la valeur 1. En effet, la fonction Map doit ressortir zéro, un ou plusieurs couples de clé-valeur. Ici, pour chaque mot présent dans la ligne, elle va ressortir le mot ainsi que la valeur 1. On voit d'ailleurs qu'on pourrait légèrement optimiser notre fonction Map afin que sur la seconde ligne, au lieu de ressortir C, 1, A, 1, C, 1, elle ressorte directement C, 2, A, 1. C'est une possibilité, ce n'est pas une obligation. Notre algorithme fonctionnera toujours de la même façon. Notre fonction Map doit absolument à répondre à deux contraintes essentielles. La première, c'est qu'elle doit ne pas avoir de fuite de mémoire. C'est-à-dire qu'à chaque appel de la fonction Map, il faut que cela ne stocke rien de manière globale et donc que la mémoire reste intouchée avant et après l'appel. Ça veut dire que si on appelle une fois la fonction Map ou 250 000 fois, elle doit pouvoir fonctionner toujours de la même manière. On l'appelle une fois sur A, B, C, une seconde fois sur A, B, C, une troisième fois sur C, A, C, peu importe. Et la fontion Map doit traiter la ligne qui lui est passée et libérer entièrement la mémoire à la fin de son exécution et donc ne rien stocker, de manière globale, qui n'est pas libéré à la fin de la fonction. C'est une contrainte essentielle puisque c'est cela à proprement parler qui permet de l'appliquer sur de très fortes volumétriques données. Qu'on ait une ligne ou qu'on en ait 200 milliards, la fonction de Map fonctionnera de la même façon sans consommer plus de mémoire et sans nécessiter plus de ressources pour pouvoir fonctionner. La seconde contrainte essentielle pour la fonction Map, c'est le fait d'être stateless, c'est-à-dire de ne pas dépendre d'un état. En effet, la fonction Map doit pouvoir être parallélisée et exécutée à plusieurs endroits sur le cluster afin que notre algorithme soit distribué sur le cluster. Pour cela, il faut donc bien comprendre que chacune des entrées va pouvoir être exécutée à des endroits différents du cluster et pas forcément dans le même ordre, pas forcément en se succédant et pas forcément au même endroit. Ainsi, on va pouvoir avoir une fonction Map qui va être appelée une fois sur la ligne A, B, C et une autre qui va être appelée deux fois sur la ligne C, B, B puis sur la ligne C, A, C. Comme je vous le dis, même l'ordre n'est pas défini, ni le fait simplement qu'elle va être appelée une fois, huit fois, 200 000 fois. C'est au framework de décider comment il va distribuer l'algorithme et donc la fonction Map sur le cluster en fonction des ressources disponibles. De ce fait-là, elle doit être totalement stateless, c'est-à-dire sans état et donner toujours le même résultat, que ce soit la première fois qu'elle est appelée ou la 200e fois qu'elle est appelée ou qu'elle ait été appelée auparavant sur la ligne A, B, C ou non, etc. C'est essentiel pour la distribution de la fonction Map. Enfin, il faut comprendre la fonction Map doit uniquement toucher aux entrées et aux sorties. C'est-à-dire qu'elle doit s'abstenir de faire toute modification éventuelle d'un état, dans une base de données ou dans autre chose sans passer par la sortie. En effet, il peut arriver qu'une fonction Map soit appelée deux fois sur la même entrée simplement pour voir laquelle va plus vite, par exemple, et supprimer celle qui va plus lentement. De la même façon, si on voit qu'à un moment donné l'algorithme plante pour une raison quelconque, une machine du cluster qui a planté, etc., on doit pouvoir ré-exécuter la même fonction Map sur la même entrée sur un autre endroit et il est donc essentiel que cette fonction Map soit stateless et retourne toujours le même résultat.

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 !