Utilsation de HDFS via la CLI et l'API

Partie 1: CLI

exercice 1: Test du cluster

  • Lancez firefox et connectez vous à l'adresse CLUSTER_HOSTNAME:50070 Vous devez arriver sur l'interface web du serveur HDFS.
  • Regardez et listez les fonctionnalités qu'offre l'interface Web.

exercice 2: Command line interface hdfs

  • Initialisez vos variables d'environnement pour avoir accès à hadoop: source user-env.sh
  • Lancez la commande "hdfs dfs". Regardez la liste de commandes proposées par hdfs. Vous pouvez obtenir de l'aide sur chaque commande en tapant: ./hdfs dfs -usage VOTRECOMMANDE
  • lisez la documentation des commandes copyFromLocal, appendToFile, mkdir, chmod.

exercice 3: Copie de fichiers

  • Créez un sous répertoire à votre nom dans le répertoire users sur le cluster de a machine 3.
  • Ajoutez dans ce répertoire des fichiers (les plus gros possibles) et vérifiez les droits d'accès de vos fichiers.
  • En utilisant l'interface web regardez la répartition des blocs sur votre cluster.
  • Arrêtez une machine du cluster ( pas le namenode ) dans la salle et regardez l'impact sur la répartition des blocs (Soyez patient, les timeouts sont assez longs 10 minutes)

exercice 4: Latence de hdfs

  • Ecrivez un script shell qui concatène un à un tous les fichiers .cpp,.hh,.h et .c (trouvés dans le répertoire /usr/ de votre machine) dans le fichier hdfs://CLUSTER_HOSTNAME:9000/users/VOTRENOM/sourcefile.txt. (utilisez les commandes find . -name "***" -exec et cat et appendToFile)
  • Expliquez la lenteur de votre script, proposez une solution pour accélérer le processus.

Partie 2 : API

Prérequis :

Avoir un cluster hadoop en qui tourne. Vous utiliserez pendant les TP le cluster hadoop configuré dans la salle.

exercice 5: API Hdf

Ouvrez la javadoc de hadoop et lisez les classes/interfaces suivantes :

  • org.apache.hadoop.conf.Configuration
  • org.apache.hadoop.conf.Configured
  • org.apache.hadoop.fs.FileSystem
  • org.apache.hadoop.fs.Path
  • org.apache.hadoop.io.IOUtils
  • org.apache.hadoop.util.Tool
  • org.apache.hadoop.util.ToolRunner

Faite un diagramme de classe sommaire en partant des classes d'implémentation vers les classes de bases.

exercice 6: Premier Programme

En utilisant le squelette d'application hadoop minimale suivant: hdfs_maven.tgz, écrivez un programme Java qui ouvre un fichier sur le disque local et copie son contenu dans une fichier stocké dans HDFS.

AIDE: utilisez les classes FileSystem, URI, OutputStream, InputStream, BufferedInputStream, FileInputStream et la fonction IOUtils.copyBytes

exercice 7: Concaténation de fichiers

Ecrivez un programme qui concatène un ensemble de fichiers stockés sur le disque local dans un fichier hdfs. Comparez le temps d'exécution avec la version script de l'exercice 4. Expliquez cette différence de performance.

exercice 8: Générateur de mots aléattoires

Ecrivez (EN JAVA) un programme qui génère des mots avec un nombre de syllabes fixées qui sont tirées dans un ensemble (que vous choisirez) et qui les insère directement ces mots dans un fichier stocké sur HDFS.