Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Objectif:
Le but de cet exercice est d'apprendre à commencer à créer des programmes MapReduce
utilisant le framework Hadoop Java. En particulier, vous apprendrez comment configurer
Eclipse environnement de développement intégré (IDE) pour le développement des
programmes utilisant Hadoop.
Pré requis:
- Virtual Machine: VirtualBox
- Une version de GNU/LINUX accessible par la VM
- Eclipse Java (Java Neon) : http://www.eclipse.org/downloads/packages/release/neon/3
start-dfs.sh
start-all.sh
jps
http://localhost:50070/
3
En préparation de l'exécution de notre programme Hadoop, nous allons maintenant déplacer le
texte du poème sur HDFS. Déplacez-vous dans le dossier contenant les données d'entrée et
exécutez la commande:
4
Nous allons utiliser l'IDE 'Eclipse' comme notre éditeur, compilateur et générateur
de la bibliothèque JAR de nos exemples hadoop
Programme Principal: (WordCount.java)
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
import org.apache.hadoop.util.*;
//Setting configuration object with the Data Type of output Key and Value
conf.setOutputKeyClass(Text.class);
conf.setOutputValueClass(IntWritable.class);
JobClient.runJob(conf);
return 0;
}
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
//map method that performs the tokenizer job and framing the initial key value pairs
// after all lines are converted into key-value pairs, reducer is called.
public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> o
utput, Reporter reporter) throws IOException
{
//taking one line at a time from input file and tokenizing the same
String line = value.toString();
StringTokenizer tokenizer = new StringTokenizer(line);
//iterating through all the words available in that line and forming the key value pair
while (tokenizer.hasMoreTokens())
{
word.set(tokenizer.nextToken());
//sending to output collector which inturn passes the same to reducer
output.collect(word, one);
}
}
}
6
import java.io.IOException;
import java.util.Iterator;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapred.*;
while (values.hasNext())
{
sum += values.next().get();
}
output.collect(key, new IntWritable(sum));
}
}
7
2.5. Exécuter la configuration:
Maintenant, cliquez sur l'onglet Exécuter et cliquez sur Run-Configurations. Cliquez sur le
bouton Nouvelle configuration sur le côté supérieur gauche et Appliquer après avoir rempli les
propriétés suivantes. (Voir l'image)
8
2.6. Exporter le projet en fichier *.JAR
Maintenant, cliquez sur l'onglet Fichier et sélectionnez Exporter. sous Java, sélectionnez Jar
Runnable. (Voir l'image)
Dans Launch Config - sélectionnez la fichier config vous avez créé à l'étape 6
(WordCountConfig).
Sélectionnez une destination à l'exportation (disons bureau.)
Sous l'onglet Bibliothèque, sélectionnez Extraire requis bibliothèques dans JAR généré et
cliquez sur Terminer.
Cliquez droit sur le fichier jar, allez à Propriétés et sous l'onglet Autorisations, cochez la case
Autoriser l'exécution de fichier comme un programme. et de donner lecture et en écriture à tous
les utilisateurs.
9
2.7. Exécution du Projet *.JAR
- Déplacez-vous vers le dossier contenant le fichier .jar
- Par le biais de terminal, tapez la commande suivante:
Si tout s'est passé correctement, un message « mapreduce.Job: map 100% reduce 100% »
devrait s'afficher.
10
III. Un Deuxième Exercice: Feed Back Tweets
3.1. Enoncé
Une entreprise dispose d'un compte twitter pour son service aprés vente, recevant plusieurs
dizaines de milliers de tweets par jour. Elle cherche à déterminer le taux de satisfaction de ses
clients à partir du compte twitter.
3.2. Résolution
Principe:
map: génère un couple (clef;valeur) par sentiment client détecté (mot correspondant à
une liste prédéfinie).
Si deux sentiments contradictoires détectés: renvoyer inconcluant.
On renvoie un couple (clef;valeur) pour chaque fragment des données d'entrée:
chaque tweet
11
Pseudo-Algorithme 'Fonction REDUCE':
reduce: additionne les valeurs associées à la clef unique; renvoie le total pour valeur (identique
au reducer du compteur d'occurences de mots).
12