L'essentiel de Hadoop

Développer le mapper

Testez gratuitement nos 1271 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
Sous Hadoop, vous développerez le mapper en Java. Cette première étape du MapReduce permettra de lire et de décomposer les données d'entrée.
08:10

Transcription

Maintenant que nous avons réalisé notre graphique de conception de notre MapReduce, que nous avons vu les différentes contraintes, notamment de mémoire et que nous avons défini quelle serait notre fonction map et quelle serait notre fonction reduce, nous allons développer, pour la première fois notre MapReduce en Java pour Hadoop. Pour cela, nous allons nous mettre dans la quickstart VM de Cloudera et lancer Eclipse qui est directement présente dans le dossier Eclipse de la racine du dossier utilisateur sur la quickstart VM. Une fois que nous aurons lancé Eclipse, nous allons lancer un nouveau projet Java. Il y en a un qui a été fait directement sur la quickstart VM pour nous aider et nous allons pouvoir, ici, lancer un premier projet qui sera MonPremierMapReduce. Ce sera un projet Java 1.7, ici, nous avons gardé la même version de Java qui est recommandée par Cloudera et nous allons ajouter des librairies. Les librairies que nous allons ajouter sont celles de Cloudera, directement celles d'Hadoop. Nous allons les retrouver dans user/lib/hadoop et nous allons rajouter l'ensemble des jars présents dans user/lib/hadoop ainsi que, pour être sûr, celles présentent dans lib/hadoop/lib et nous pouvons regarder dans MapReduce, nous devons rien avoir qui va nous intéresser, quoi que nous avons les mapreduce-client. Dans le doute, nous allons les mettre. Il est possible, et il peut être recommandé, de n'utiliser que les librairies qui sont nécessaires. Une fois que nous avons rajouté toutes nos librairies, nous allons pouvoir créer réellement notre projet et nous allons créer notre première class qui sera notre mapper à proprement parler. Pour créer un mapper, il faut que cela, forcément, hérite de la class mapper de Hadoop. La class mapper, on la retrouve dans le package org.apache.hadoop.mapreduce Attention de toujours prendre les class présentes dans le package mapreduce qui correspondent à la seconde version de l'API MapReduce et non pas les class qui sont dans org.apache.hadoop.mapred qui correspondent à la première version de l'API aujourd'hui désuète. Nous allons étendre de org.apache.hadoop.mapreduce.Mapper et nous allons créer notre class. Nous voyons que la class Mapper de Hadoop est une class avec des types génériques, quatre types à proprement parler, qui se retrouvent ici et qu'il nous faut absolument remplir. Il s'agit de format de la clé en entrée, de la valeur en entrée, de la clé de sortie et de la valeur en sortie. En effet, le mapper va prendre des entrées sous forme de clé valeur et ressortir des couples de clés valeur. Il nous faut enregistrer forcément les différents types. Ici, comme notre entrée va venir d'un fichier, on va avoir la clé qui sera le numéro de ligne donc un Long sous Hadoop. Sauf que chacun de ces formats doit être ce qu'Hadoop appelle des writables, c'est-à-dire des choses qui peuvent être écrites, à proprement parler, sur le disque dur, et sérialisé. Ce sera donc LongWritable du package org.apache.hadoop.io en clé et en valeur ce sera un Text, un text Hadoop toujours dans org.apache.hadoop.io On va écrire une clé valeur qui sera un Text pour être notre produit en entrée et un Text pour être notre produit en sortie. Nous venons donc de définir l'ensemble des paramètres de notre class mapper et il nous faut développer la fonction map. Eclipse va nous permettre de la pré-remplir directement, Fonction map qui va prendre en entrée un LongWritable et un Text, comme nous l'avons dit ici, plus un Context qui va nous permettre de pouvoir ressortir nos différents couples de clés de valeur. Notre fonction map a pour objectif de spliter, à chaque fois, nos valeurs donc de faire un Value.split, sauf que Value est un Text et non pas une String, il nous faut donc faire un Value.toString pour pouvoir l'avoir sous forme de chaîne de caractères et réaliser dessus un Split sur le séparateur virgule. Ceci va nous donner un tableau de String qui représentera nos différents produits, sans le dollar car on est en Java, et maintenant, on va itérer sur ce tableau de produits, à chaque fois, pour générer les couples de clés valeur. On va faire une première itération avec un simple for où mon parcours de i = 0 a la taille du tableau et à chaque fois on va voir notre premier produit, et on va faire la même chose avec une seconde itération qui sera j où, à chaque fois, on commencera à l'index suivant de i j commence à i + 1 On s'assure que j ne dépasse pas la taille du tableau par length et on incrémente. j sera donc notre second produit. A chaque fois, on va devoir écrire le couple clé valeur du produit i et du produit j Pour cela, on fait un Context.write qui va nous permettre d'écrire produits de i et produits de j qui sont donc nos clés valeurs. Cependant, le Context.write, comme on l'a vu dans l'autocomplétion, prend deux Text. En effet, on a dit ici que nos sorties étaient des Text, or on vient de sortir des String. Il nous faut donc transformer ces String en text puisqu'on ne pas pas écrire de String. Pour cela, on peut faire juste des new Text qui nous permettent de transformer ces String en Text qui sont sérialisables et peuvent être utilisés nativement sur Hadoop. Nous venons de finir de coder notre mapper et nous allons pouvoir désormais nous attaquer au reducer.

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 !