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