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

Lancer un MapReduce en Java

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Lancez votre premier MapReduce grâce à son driver, en ligne de commande, et visualisez les résultats.
07:27

Transcription

À présent que nous avons développé notre mapper, notre reducer, que nous avons également généré des données et que nous les avons chargées dans l'HDFS, que nous avons développé notre driver, le contrôleur, à proprement parler, de notre code et de notre MapReduce de notre job sous Hadoop, nous allons pouvoir enfin l'exécuter. La première chose, pour l'exécuter est de l'exporter en JAR. En effet, nous avons spécifié à Hadoop qu'on va utiliser un Jar qu'il va pouvoir distribuer sur toutes les machines du cluster Hadoop qui devront exécuter cette application afin qu'il puisse mettre à disposition ce code partout. On a identifié ce Jar comme celui contenant mon mapper, la classe mon mapper. Nous allons créer un Jar, sous Eclipse nous pouvons le faire de façon très simple, avec file export jar files. Nous lui spécifions de prendre tout le code de mon premier MapReduce tout ce qu'il y a dans SRC sauf potentiellement le fichier PHP et nous allons l'appeler mpmr.jar dans le home de l'utilisateur Clouder. Nous pouvons également, si nécessaire, créer ce Jar directement en ligne de commande, avec la commande Java. Nous allons donc désormais exécuter ce Jar. Pour cela, nous allons faire hadoop jar avec le pass vers le Jar, chez nous, c'est dans le home donc, c'est : ~ slash mpmr.jar et le nom de la classe principale à exécuter, en effet vous avez remarqué qu'on ne l'a même pas spécifié lors de la création du Jar. Donc, ici, mon driver. Nous lançons cela et nous voyons que Hadoop se plaint, il dit que le répertoire de sortie mpmr output existe déjà. Effectivement, nous l'avons créé tout à l'heure et il faut, pour que cela puisse être exécuté sur Hadoop, que le répertoire n'existe pas. C'est-à-dire que même s'il est vide, cela ne fonctionne pas, il faut réellement qu'il n'existe pas au lancement du MapReduce. Ainsi donc, nous allons utiliser la commande hdfs dfs rm -r pour le supprimer, le -r permettant de faire une suppression récursive, c'est-à-dire de supprimer les fichiers également dans le répertoire mpmr output, si jamais il y en a. Nous l'avons supprimé, nous pouvons donc relancer notre commande pour exécuter notre MapReduce et nous voyons qu'il se lance. Nous voyons plusieurs choses apparaitre à l'écran. D'abord, le job a un numéro, et un nom qui vont nous permettre de l'identifier par la suite. Il a également une URL qui va permettre de suivre sa progression. On voit qu'il y a un input pass qui a été ajouté donc, effectivement, on avait mis /mpmr/input et que ce un input pass a été découpé en un split, donc un mapper. Une fois que ce job s'est lancé, il a commencé avec 0 % pour les mappers, 0 % pour les reducers, les mappers s'exécutent en premier, très rapidement donc ils sont passés directement à 100 % et les reducers se sont exécutés par la suite. Ils se sont exécutés jusqu'à arriver à 100 % et avoir un job qui a été complété avec succès. Puis, on a une foule de compteurs qui s'ajoutent à cela, notamment des compteurs sur le nombre d'octets lus ou ce genre de choses, que ce soit en local ou sur l'HDFS mais également des compteurs sur le nombre de mappers et de reducers lancés, on sait qu'on a eu un mapper et dix reducers, c'est ce qu'on avait demandé pour les dix reducers, le nombre de temps écoulé, l'utilisation de mémoire ou de CPU et, surtout, le nombre d'entrées des mappers, donc 1000, notre fichier d'entrées avec 1000 lignes. Le nombre de sorties du mapper, 6322, le mapper a généré 6322 sorties, c'est-à-dire 6322 ensembles de clés valeurs. Le nombre de groupes qui a été réalisé, dix, effectivement on a dix produits, soit dix entrées dans le reducer, dix groupes et le nombre de sorties reducer, dix également. Un reducer, dans notre application, génère une sortie, un couple clé valeur pour un groupe. Une fois qu'on a tout cela, on voit que notre job s'est bien exécuté et on peut regarder directement dans l'HDFS le contenu de mpmr/output qui est notre répertoire de sortie. On y voit plusieurs choses, la première est un fichier vide, avec une taille de zéro qui s'appelle _success, cela permet de savoir que le MapReduce s'est bien déroulé. Tous les fichiers commençant par un underscore sous Hadoop, par convention, sont ignorés dans les traitements MapReduce. Ainsi, si on donne comme entrée à un autre MapReduce ce répertoire-là, le fichier underscore success va, automatiquement, être ignoré lors du traitement. C'est un fichier caché, en quelque sorte. Ensuite, on voit dix fichiers correspondants à nos dix reducers qui se nomment tous « part -r », pour reducer, puisque c'est un reducer qui l'a écrit tiret, le numéro du reducer. Ca va de zéro à neuf, il y en a bien dix. On voit que ces fichiers peuvent contenir soit aucune donnée, soit a priori une donnée, soit deux données. Effectivement, nos dix groupes n'ont pas été traités chacun sur un reducer différent, il y a des reducers qui ont traité zéro groupe et d'autres un, d'autres deux. La distribution n'est pas parfaite pour traiter dix groupes sur dix reducers. Ces fichiers vont contenir la sortie de nos reducers. Une façon courante et simple pour pouvoir les afficher, c'est de faire directement un cat de /mpmr/output/*. Le fichier _success ne va pas rajouter quoi que ce soit vu qu'il est totalement vide et renvoie ici nos dix lignes correspondant à nos dix sorties, nos dix produits, en l'occurrence avec, à chaque fois, un séparateur tabulation, le séparateur par défaut entre la clé et la valeur en sortie du reducer lorsqu'on utilise un file output format et à chaque fois, une chaîne de caractères correspondant aux produits liés, aux produits en cross-selling qui sont reliés à Salade, ici, en l'occurrence dans l'ordre dans lequel ils peuvent être suggérés à l'utilisateur. On remarque bien qu'a priori, pour la Salade, on ne suggère jamais la Salade derrière, ce qui n'est pas possible dans notre algorithme et on remarque qu'à chaque fois on a l'ensemble des 99 produits parce qu'effectivement ça doit arriver sur les 1000 paniers et que systématiquement il faut qu'un produit soit suivi par un autre, c'est surtout l'ordre qui nous importe ici pour savoir lesquels suggérer en priorité. Nous allons pouvoir désormais voir comment suivre nos MapReduce dans l'interface graphique pour un meilleur suivi.

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 !