3 votes

Existe-t-il une API permettant d'obtenir les blockIds d'un fichier de manière séquentielle en fonction du chemin d'accès au fichier ?

Étant donné une chaîne de caractères indiquant le fichier, par exemple "filepath", comment obtenir les blockIds ?

Je sais que je peux construire un chemin et ensuite créer un système de fichiers, mais je ne sais pas comment procéder pour obtenir les numéros de blocs.

Merci de votre réponse.

1voto

Chris White Points 18360

À partir de la ligne de commande, vous pouvez utiliser la commande fsck pour obtenir une liste de blocs de fichiers :

hadoop@Studio-1555:/opt/hadoop/hadoop-1.0.2/bin$ ./hadoop fsck /hadoop/mapred/system/jobtracker.info -files -blocks
FSCK started by hadoop from /127.0.0.1 for path /hadoop/mapred/system/jobtracker.info at Mon Jul 09 06:57:14 EDT 2012
/hadoop/mapred/system/jobtracker.info 4 bytes, 1 block(s):  OK
0. blk_-9148080207111019586_1001 len=4 repl=1

Pour ce qui est de la programmation, je ne suis pas sûr que vous puissiez faire autre chose que ce que fait le programme DFSck, à savoir exécuter une requête contre la FsckServlet et analyser les résultats. L'objet BlockLocation renvoyé par FileSystem.getBlockLocations(..) ne vous donne pas les identifiants des blocs, mais je suppose qu'il s'agit d'un mécanisme interne à HDFS, qui n'est probablement pas facilement accessible au client.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X