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

publicité
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
Liste des fichiers
Copier vers HDFS
Depuis vers HDFS
hadoop
hadoop
hadoop
hadoop
fs
fs
fs
fs
-mkdir /chemin/du/répertoire
-ls /chemin/du/répertoire
-copyFromLocal /chemin/source /chemin/destination
-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à compilé. 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 programmes.
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
Etudiant
Etudiant
Etudiant
Etudiant
Etudiant
Etudiant
Etudiant
Etudiant
Etudiant
1
2
3
4
5
6
7
8
9
10
math
math
math
math
math
math
math
math
math
math
5
5
5
5
5
5
5
5
5
5
4
12
9
12
10
13
20
16
7
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
Téléchargement