Skip to content
Snippets Groups Projects
Select Git revision
  • main
1 result

hadoop

  • Anthony Caumond's avatar
    Anthony Caumond authored
    Solution
    
    See merge request !1
    5241d94b
    History

    hadoop

    D'abord un peu d'introduction / théorie / rappel:

    Vers le ppt

    Installation

    Soit vous êtes connectés à GIT, sinon, ajoutez votre clé:

    Where to find ssh menu

    Puis:

    Saisissez votre clé

    Et, installez la clé en suivant les instructions décrites ici.

    Créez un répertoire de travail pour le TP et lancez:

    git clone git@gitlab.isima.fr:iia_ancaumon/hadoop.git

    Construire

    • La construction et l'exécution de l'image sont automatisées par:
    bin/run.sh
    • Pour entrer dans le container, faites:
    start-hadoop.sh

    Exercices:

    L'objectif de ces exercices est de faire un peu de configuration de mapreduce, afin de se familiariser avec l'environnement, en simulant plusieurs noeuds, mais en restant en local. D'abord, nous utiliserons des mapreduce déjà fait, puis nous écrirons le notre.

    • Pour l'ensemble des questions suivantes, lisez la documentation d'apache. Elle est un peu ardue, des pointeurs particuliers sont fournis dans les questions. Commencez par vous familiarisez avec elle.
    • Chaque bin/run.sh redémarre le container, from scratch, et efface votre contenu
    • Quitter le docker ne l'arrête pas,
    • Si vous avez besoin d'un connecteur à hadoop, faites bin/connect.sh.
    • L'installation d'hadoop est réalisée dans le container docker dans le répertoire /opt/hadoop, toutes les références à hadoop sont contextualisés dans ce répertoire, ajouté dont le bin est ajouté dans le $PATH pour plus de facilité.

    Question 1 - grep sur des fichiers exemples.

    L' objectif est de copier des fichiers sur dfs, faire tourner un mapreduce d'exemple (grep), et récupérer les résultats. Apprendre à faire l'aller et retour avec le cluster, en somme !

    • Construisez le répertoire de base de root /user/root sur le noeud comme le suggère la documentation d'apache.

    • Copiez les fichiers de configuration depuis etc/hadoop dans hdfs, en suivant la documentation

    • Dans la page de setup, il y a un exemple sur un mapreduce fournit par hadoop, le grep, appliquez cet exemple au fichier hadoop-env.cmd, copié précédémment

    • Regardez le résultat directement dans le dfs

    • Récupérez localement les fichiers depuis le cluster pour les examiner

    Question 2 - on prend de l'assurance sur une variante

    • Comptez les occurences des mots commençant par h dans le fichier hadoop-env.cmd

    Question 3 - exécution d'un exemple différent

    • Transférez le fichier data/verlaine.txt sur le dfs

    • Exécutez le comptage de mots, c'est un des exemples d'hadoop-mapredurce-examples, il suffit d'indiquer wordcount au lieu de grep et l'exemple tourne.

    Question 4 - en sortant du docker maintenant

    • Hadoop tourne dans une image docker, ces images ne sont pas persistantes, tous les fichiers qui y sont décrits disparaissent à la mort du conteneur.

    • Le répertoire data a été monté comme un volume, son contenu à l'intérieur du docker /data et à l'extérieur du docker ./docker sont identiques à chaque instant,

    • Essayé de créer un fichier d'un côté, observez de l'autre

    • Télécharger un gros fichier texte et faites tourner le wordcount.

    Question 5 - faites vous même un mapreduce AOP

    Suivez la documentation pour réaliser mapreduce dans un jar

    Question 6 - Parser vous même un fichier

    Le fichier data/dates.txt est au format suivant: un prénom, une année, et des valeurs. L'objectif est de calculer la moyenne, globale, par année (quel que soit le prénom, et moyenne de toutes les valeurs en colonnes).

    • Ecrivez une classe MapperDates qui implémente MapReduceBase et étends Mapper

      • Renseignez vous sur Mapper dans la [doc](h* et sur MapReduceBase dans la doc.

      • qui doit implémenter Mapper<LongWritable Text Text IntWritable

    • De même, une classe ReducerDates qui implémente Reducer< Text, IntWritable, Text, IntWritable >, cf. la documentation.