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

Concevoir un MapReduce

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Décomposez un problème donné en algorithme MapReduce. Ainsi, vous pourrez paralléliser son exécution sur de très fortes volumétries de données.
07:14

Transcription

Afin de mettre ce que nous venons de voir sur la théorie du paradigme MapReduce en pratique, nous allons prendre un exemple, mais un nouvel exemple un petit peu plus original que le WordCount. Nous allons nous occuper d'un cas de cross selling, c'est-à-dire de voir quels produits sont couramment vendus avec d'autres, en complément d'autres produits. Pour ça, donc, l'idée c'est de partir d'un ensemble de paniers, de choses que les gens ont acheté ensemble, et de voir simplement quels produits peuvent dépendre d'autres produits, afin de pouvoir faire des suggestions. Ça fonctionnerait également potentiellement pour des films, ou pour d'autres choses comme ça, des choses qui pourraient intéresser et faire des suggestions de films, d'opinions ou d'intérêts à partir de ce que les gens ont précédemment aimé, vu, etc... Pour cela, nous allons donc partir d'une entrée à gauche qui va correspondre à nos différents paniers. Ainsi donc, on va considérer qu'on a ici trois paniers qui correspondent à un ensemble de produits, les produits A, B et C, qui ont été insérés et achetés ensemble par les clients. Et on va vouloir voir, à la fin, pour chaque produit, quel produit qu'on peut suggérer avec un autre. On va considérer pour cela que les produits dans le panier sont enregistrés dans l'ordre dans lequel ils ont été mis. Ainsi donc, on va considérer que pour la première ligne, la ligne A, B, C de notre entrée, on va avoir le client qui a d'abord inséré le produit A dans le panier, puis le produit B dans le panier et enfin le produit C dans le panier et on va considérer de ce fait-là que les produits B et C peuvent avoir été poussés par l'achat de A, que le produit C peut avoir été poussé par l'achat de B ou par l'achat de A. De la même façon, pour la seconde ligne, on aura les produits A et C qui peuvent avoir été poussés par l'achat de B et le produit C qui peut avoir été poussé par l'achat de B ou de A. Et on va vouloir avoir une sortie qui correspond pour chaque produit à l'ensemble des produits que l'on va suggérer. Ainsi donc, si quelqu'un achète le produit A, on va lui suggérer en premier le produit C, parce que c'est celui qui aura été le plus souvent acheté à la suite du produit A, puis le produit B. Si on achète le produit B, on va suggérer d'abord le produit C, puis le produit A. Si on achète le produit C, on va suggérer uniquement le produit B. En effet, A n'est jamais acheté après C. Alors pour cela, il nous faut toujours avant tout, et avant de commencer, à proprement parler, à développer notre MapReduce, pouvoir définir les contraintes et les limites de notre algorithme. Ici, afin d'être crédibles, on va considérer qu'on est un grand magasin, donc on va considérer qu'on travaille sur de la Big Data. On va considérer qu'on a des entrées, en très fort volume. Ainsi donc, on va considérer que le nombre de paniers, le nombre de lignes dans notre entrée va être non déterminé, non limité simplement, et pouvoir être de plusieurs centaines de millions. Par contre, le nombre de produits, quant à lui, va être un nombre fini et un nombre déterminé sous une limite qui est finie, et qui va pouvoir tenir en mémoire, et être stocké au fur et à mesure de notre algorithme. Il est essentiel avant chaque développement de MapReduce de définir quelles sont les données en trop fort volume pour pouvoir être stockées en mémoire, et notamment les données qui ont tendance à vouloir augmenter de volume avec le temps et les données qui sont en nombre fini, et qui pourront être stockées de manière raisonnable en mémoire pour l'exécution de l'algorithme. A présent nous allons donc le découper. La première étape c'est l'étape du split et va simplement consister à lire chaque panier un par un. Nous somme habitués, ici ça correspond à découper notre ou nos fichiers d'entrée par ligne directement. Ensuite nous allons opérer l'algorithme Map. L'algorithme Map va extraire les données qui nous sont essentielles pour chaque panier, et les mettre dans un format qui nous permettra de les traiter derrière. Ainsi donc ici, il doit ressortir comme toujours 0,1 ou plusieurs couples de Clefs-Valeurs et ça sera à chaque fois les différentes possibilités après un achat. Pour la première ligne, la ligne A, B, C, on voit que A peut conduire à B, A peut conduire à C, et B peut conduire à C. Pour la ligne B, A, C, on va donc avoir B qui conduit à A, B qui conduit à C et A qui conduit à C. Pour la ligne C, B, on va voir donc une seule possibilité qui est C qui conduit à B. Nous avons à chaque fois nos Clefs-Valeurs qui sont ressorties par la fonction Map avec 0, 1 ou plusieurs Clefs-Valeurs pour chaque appel à la fonction Map. Cette fonction Map respecte nos deux contraintes, la première d'être stateless, donc de ne pas dépendre de l'état de l'ordre dans lequel elle est exécutée et la seconde contrainte de ne pas avoir de fuite de mémoire. Le Framework va réaliser le Shuffle and Sort, et va regrouper nos sorties de la fonction Map directement par Clef-Valeur, ainsi quand le Shuffle and Sort va s'appliquer, on va avoir le regroupement de toutes les entrées qui ont pour clé A, donc AB, AC et AC, toutes celles qui ont pour clé B, et toutes celles qui ont pour clé C et on va avoir la fonction Reduce, qui va devoir pouvoir nous sortir le résultat. Ici on a dit que le nombre de produits est un nombre fini, limité, donc on peut stocker l'ensemble des valeurs directement dans le Reducer pour pouvoir les traiter. Comme je vous le disais, c'est à penser en amont de l'algorithme pour ne pas avoir de mauvaises surprises par la suite. Ici, l'idée est que notre Reducer va devoir à chaque fois ressortir de façon unique les différentes possibilités dans l'ordre du nombre d'apparitions. C'est-à-dire que pour le groupe A, pour l'appel à la fonction Reduce sur le premier groupe, elle va ressortir en premier C, qui apparaît deux fois, et B qui apparaît une fois. Pour l'appel sur le groupe B, elle va retourner C en premier qui apparaît deux fois, et A qui apparaît une fois. Et pour le troisième, elle va retourner donc que B. Nous avons conçu ici notre premier algorithme MapReduce qui va répondre à notre besoin. Nous allons voir désormais, comment le développer en Java, puis en C++ et en PHP, toujours pour le faire fonctionner sur Hadoop.

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 !