Lecture d’un fichier HDFS par un programme Hadoop

Dans le cours précédent “Fonctionnement de HDFS” nous avons présenté HDFS (Hadoop Distributed Filesystem) et nous avons aussi detaillé son fonctionnement. Pour rappel, HDFS est le composant de Hadoop en charge du stockage des données dans un cluster Hadoop.

Dans cette partie nous allons  présenter un peu plus en détail les grandes étapes de Lecture de fichiers HDFS par un programme Hadoop :

  1. Le programme Hadoop demande l’ouverture du fichier à HDFS, par le biais d’une instruction open().
  2. HDFS demande au NameNode de localiser les premiers blocs constituant le fichier, par le biais d’un appel de type RPC
  3. Le NameNode s’assure que le programme Hadoop dispose des droits suffisants pour lire le fichier. Si oui, le NameNode renvoie à HDFS trois adresses pour chaque bloc. Sinon, une exception IOException est générée.
  4. HDFS renvoie une instance de FSDataInputStream au programme Hadoop, ce qui lui permet d’accéder au fichier en lecture, par le biais de l’instruction read().
  5. Une fois l’integralité d’un bloc a été lue, HDFS ferme la connexion avec le DataNode concerné, et en ouvre une nouvelle pour lire le bloc suivant.
  6. Enfin, lorsque la lecture du fichier est terminée, le programme Hadoop envoie close() à FSDataInputStream.
Mais qu’arrive-t-il si un problème de lecture intervient au niveau d’un bloc ? HDFS le détecte et essaye de lire le bloc concerné sur l’un des deux autres DataNode qui hébergent une copie.

 

Laisser un commentaire