Atelier 2: MapReduce


PARTIE 1

1. Décompresser le fichier TP_MapRed.rar ci-joint et copier le dossier Tp_MapRed dans le dossier local /home/cloudera de votre VM

2. Créer le dossier HDFS:   /user/cloudera/wordcount/input

3. Charger le fichier texte maman.txt dans le dossier HDFS  /user/cloudera/wordcount/input

4.  Exécution du job MapReduce
Le code de ce job est bien commenté sur https://github.com/kite-sdk/kite/wiki/Hadoop-MapReduce-Tutorial
- Se positionner dans le dossier du tp:
  $ cd    /home/cloudera/Tp_MapRed

- Exécution de wordcount.jar dont la classe principale est WordCount du package org.myorg:
hadoop  jar  wordcount.jar  org.myorg.WordCount /user/cloudera/wordcount/input  
              
            /user/cloudera/wordcount/output 

Les deux dossiers  fournis représente les deux arguments (args[0] et args[1])  de main() dans la classe principale: le premier contient les fichiers à traiter et le deuxième contiendra les résultats.

- Afficher le contenu de tous les fichiers du dossier HDFS /user/cloudera/wordcount/output/  qui contient les résultats produits par les reducers:


$ hdfs   dfs   -cat  /user/cloudera/wordcount/output/*


5. Dans le dossier Tp_MapRed, faire une copie de WordCount.java dans WordTotal.java

  •  Dans  WordTotal.java, remplacez "WordCount" par "WordTotal" et "wordcount" par "wordtotal".

6. Modifier les méthodes Map et Reduce dans WordTotal.java pour calculer le nombre total de mots.

Indication: Tous les tuples produit par la tâche Map doivent avoir la même clé (par exemple: "Nombre de mots")

7. Compiler le code source et exécuter votre Job:

$ cd    /home/cloudera/Tp_MapRed
$ rm     -rf     build
$ mkdir   build
$ javac    -cp   /usr/lib/hadoop/*:/usr/lib/hadoop-mapreduce/*  WordTotal.java  -d    build    -Xlint

♠  Ignorez les Warnings que vous allez avoir

$ jar    -cvf   wordtotal.jar    -C   build/    .
$ hdfs dfs   -rm   -r  -f     /user/cloudera/wordcount/output
$ hadoop  jar   wordtotal.jar  org.myorg.WordTotal   /user/cloudera/wordcount/input   
                /user/cloudera/wordcount/output  
$ hdfs   dfs   -cat   /user/cloudera/wordcount/output/*


PARTIE 2: REMETTRE LE PROGRAMME DE CHAQUE QUESTION ACCOMPAGNÉ D'UNE CAPTURE D’ÉCRAN DU RÉSULTAT

  1. Charger le fichier vol.csv dans le dossier HDFS à créer: /user/cloudera/data_vol/input

    La structure de vol.csv est la suivante:
                          année;mois;jour;num_vol;depart;arrivée;distance

  2. Afficher le contenu du dossier HDFS (commande ls): /user/cloudera/data_vol/input

  3. Utiliser l'url   http://localhost:50070  pour parcourir l'arborescence HDFS via le lien Utilities
    hue

  4. Enregistrer WordCount.java   sous le nom Vol.java

  5. Modifier Vol.java afin d'avoir le nombre de vols en partance de chaque aéroport.

     public void   map (LongWritable key, Text   value, Context    context)

               throws IOException, InterruptedException {

              String line = value.toString();      
              String  []  word = line.split(";");
                context.write(............ , ................)
               }

  6. Compiler et exécuter le programme

  7. Modifier une copie de votre programme afin d'avoir la distance maximale.

  8. Modifier une copie de votre programme afin d'avoir le nombre de vols pour chaque pair  d'aéroports, sans distinction entre départ et arrivée, Exemple:  IND-BWI       24

  9. Modifier le programme de la question 6 afin d'avoir le nombre de vols en partance et en arrivé pour chaque aéroport.  Exemple de résultat :     IND Départ         136

                                                                                IND Arrivée        8