Création d’un fichier HDFS par un programme Hadoop

Création d’un fichier HDFS par un programme Hadoop comporte les grandes étapes suivantes :

  1. Le programme Hadoop demande la création du fichier à HDFS, par le biais d’une instruction create().
  2. HDFS envoie une demande de création de fichier au NameNode, par le biais d’un appel de type RPC.
  3. Le NameNode s’assure que le fichier n’existe pas et que le programme Hadoop disposes des droits nécessaires pour créer le fichier. Si tout se passe bien, le NameNode ajoute le nouveau fichier dans sa cartographie  des données du cluster. Sinon, une exception IOException est générée
  4. HDFS renvoie une instance de FSDataOutputStream au programme, ce qui lui permet d’accéder au fichier en écriture.
  5. Les lignes envoyées à HDFS pour écriture dans le fichier sont découpées en paquets et stochées temporairemenr dans une file d’attente, qui est prise en charge par une instance de DataStreamer :
    • DataStreamer demande au NameNode les adresses de trois blocs sur trois DataNodes différents pour y stocker les données de la file d’attente.
    • Chaque fois qu’un paquet de données a été stocké avec succès sur un DataNode, un accusé de réception du paquet est envoyé à FSDataOutputStream.
    • DataStreamer pourrait demander au NameNode trois nouvelles adresses lorsqu’un groupe de trois blocs est plein.
  6. Enfin, lorsque le dernier paquet a été écrit avec succès sur trois DataNodes différents, le programme Hadoop envoie close() à FSDataOutputStream.
Mais qu’arrive-t-il si un problème d’écriture intervient au niveau d’un DataNode ? HDFS le détecter, affecte un nouveau bloc de remplacement dans le cluster et réécrit dans ce nouveau bloc tous les paquets susceptibles d’être affectés par le problème d’écriture

Laisser un commentaire