Certificat Big Data – Outils pour le cloud TP1: Débuts avec

Certificat Big Data – Outils pour le cloud
TP1: Débuts avec Hadoop
Olivier Schwander <[email protected]>
1 Clefs en main
Note : sur les machines virtuelles, lancer la commande suivante pour installer un compilateur java :
sudo apt-get install default-jdk
Système de fichier distribué Les données traitées par un programme Hadoop doivent être
stockée sur HDFS, le système de fichiers distribué fourni par Hadoop.
Création d’un répertoire hadoop fs -mkdir /chemin/du/répertoire
Liste des fichiers hadoop fs -ls /chemin/du/répertoire
Copier vers HDFS hadoop fs -copyFromLocal /chemin/source /chemin/destination
Depuis vers HDFS hadoop fs -copyToLocal /chemin/source /chemin/destination
Question 1.1
Créer un répertoire HDFS puis copier des données depuis votre machine vers ce répertoire. Lister
le contenu de ce répertoire. Recopier les données vers votre machine.
Question 1.2
Il y a une arnaque. Trouvez-là. Où sont les données ?
Lancement d’un programme On va maintenant lancer un programme MapReduce déjà com-
pilé. Le lancement d’une tâche se fait de la façon suivante :
/opt/hadoop-2.6.3/bin/hadoop jar /chemin/vers/bibliothèque.jar NomDeLaClasse [arguments]
Par exemple, pour lancer le programme WordCount contenu dans la bibliothèque d’exemples fournis
avec Hadoop, on utilise :
1
/opt/hadoop-2.6.3/bin/hadoop jar \
/opt/hadoop-2.6.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.3.jar \
WordCount input/ output/
Note : la commande précédente est à taper sur une seule ligne, sans les \.
Question 1.3
Lancer le programme et observer les fichiers générés.
Compilation d’un programme Télécharger le fichier source Java http://www-connex.lip6.
fr/~schwander/enseignement/2015-2016/m2bigdata_cloud/WordCount.java.
La première étape est de compiler le fichier WordCount.java avec :
javac -cp $(/opt/hadoop-2.6.3/bin/hadoop classpath) WordCount.java
La partie dans le $(...) appelle une commande qui renvoie les arguments à donner au compilateur
Java (javac) pour que la compilation fonctionne (on peut lancer directement hadoop classpath
pour voir ces arguments).
La deuxième étape est de créer une bibliothèque (le fichier .jar), avec la commande suivante
jar cf wc.jar WordCount*.class
/opt/hadoop-2.6.3/bin/hadoop jar \
wc.jar \
WordCount input/ output2/
Question 1.4
Compiler la bibliothèque à partir du fichier source.
Question 1.5
Lancer le programme qui vient d’être compilé. Comparer les résultats générés par les deux pro-
grammes.
2 À vous
On veut désormais calculer des moyennes d’étudiants. Télécharger le fichier http://www-connex.
lip6.fr/~schwander/enseignement/2015-2016/m2bigdata_cloud/notes.zip contenant les notes
d’étudiants pour différentes matières.
Chaque fichier est de la forme (nom, matière, coefficient, note), chaque colonne étant séparée
par une tabulation ("\t") :
2
Etudiant 1 math 5 4
Etudiant 2 math 5 12
Etudiant 3 math 5 9
Etudiant 4 math 5 12
Etudiant 5 math 5 10
Etudiant 6 math 5 13
Etudiant 7 math 5 20
Etudiant 8 math 5 16
Etudiant 9 math 5 7
Etudiant 10 math 5 1
Question 2.1
En utilisant le fichier WordCount.java comme base, écrire un programme MapReduce pour calculer
la moyenne de chaque étudiant. On ignorera les coefficients de pondération.
Note : la documentation Hadoop est disponible à l’adresse https://hadoop.apache.org/docs/
r2.6.3/api/index.html. Par exemple, pour la classe Text :https://hadoop.apache.org/docs/
r2.6.3/api/org/apache/hadoop/io/Text.html. La documentation Java est disponible à l’adresse
http://docs.oracle.com/javase/7/docs/api/. Par exemple pour la classe String :http://
docs.oracle.com/javase/7/docs/api/java/lang/String.html.
Question 2.2
Comment adapter le programme pour faire une moyenne pondérée ?
Question 2.3
Comment trouver l’étudiant avec la meilleure moyenne ?
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !