Introduction
Le commerçant a reçu un fichier de produits. Un collègue a besoin d’une copie pour révision, un autre d’une version archivée, et vous devez télécharger le fichier révisé pour l’examiner. Si ces opérations remplacent ou suppriment accidentellement l’original, l’équipe perd sa source de confiance.
Le cycle de vie d’un fichier est l’ensemble des opérations qu’il traverse : arrivée, utilisation, archivage, exportation et suppression éventuelle. HDFS propose des opérations pour chaque action, mais leurs effets diffèrent. Le téléversement et le téléchargement copient entre systèmes de fichiers ; la copie et le déplacement internes à HDFS restent dans HDFS.
Vous organiserez des répertoires distincts pour les données brutes, les archives et le travail temporaire, préserverez le fichier brut, exporterez une archive et supprimerez uniquement une copie jetable. Vous connaissez déjà les chemins HDFS et les commandes de téléversement et de lecture ; ce lab y ajoute une gestion attentive des fichiers. L’environnement et les données sont indépendants des labs précédents. Utilisez le Terminal tout au long du lab.
Préserver une entrée brute
Dans cette étape, vous téléverserez le fichier d’entrée du commerçant dans un répertoire réservé aux fichiers originaux.
Un fichier brut est une entrée conservée dans sa forme originale. Un répertoire scratch distinct contient le travail temporaire, et un répertoire archive contient une copie à conserver. Les noms des répertoires n’appliquent pas automatiquement ces règles ; ils rendent vos intentions visibles.
Commencez dans l’espace de travail local :
cd /home/labex/project
Lisez le fichier d’entrée avant de le stocker :
cat /home/labex/project/data/products.txt
Il contient :
notebook pen notebook
folder pen
notebook folder
Utilisez -mkdir -p avec trois chemins de répertoires. HDFS crée chaque répertoire nommé et les parents manquants :
hdfs dfs -mkdir -p /user/labex/file-lifecycle/raw /user/labex/file-lifecycle/archive /user/labex/file-lifecycle/scratch
Téléversez l’entrée locale dans le répertoire des données brutes :
hdfs dfs -put /home/labex/project/data/products.txt /user/labex/file-lifecycle/raw/products.txt
Un téléversement réussi n’affiche normalement rien. Si vous le répétez, une erreur indiquant que la destination existe protège le fichier stocké contre un écrasement accidentel. Examinez l’entrée stockée plutôt que de la supprimer pour faire disparaître l’erreur :
hdfs dfs -cat /user/labex/file-lifecycle/raw/products.txt
Le texte doit correspondre à l’original local. L’original reste aussi dans le système de fichiers local : -put copie sa source locale au lieu de la déplacer. Vos opérations suivantes utiliseront des copies pour que cette entrée brute reste intacte.
Copier et archiver dans HDFS
Dans cette étape, vous créerez une copie de révision, puis déplacerez cette copie dans l’archive sans déplacer l’entrée brute.
L’opération -cp copie une source HDFS vers une destination HDFS. Contrairement à -put, les deux chemins ci-dessous désignent HDFS :
hdfs dfs -cp /user/labex/file-lifecycle/raw/products.txt /user/labex/file-lifecycle/scratch/review.txt
Examinez la copie de révision :
hdfs dfs -cat /user/labex/file-lifecycle/scratch/review.txt
Vous devriez voir les mêmes libellés de produits. Un nom différent désigne toujours les mêmes données, et non un nouveau lot de ventes.
Lorsqu’une copie de révision est prête à être conservée, déplacez-la avec -mv. Un déplacement dans ce système de fichiers change son chemin ; il ne conserve pas le chemin source. Avant d’exécuter la commande, prévoyez quel fichier disparaîtra et lequel restera :
hdfs dfs -mv /user/labex/file-lifecycle/scratch/review.txt /user/labex/file-lifecycle/archive/products-reviewed.txt
Listez ensemble les répertoires scratch et archive. -ls accepte plusieurs chemins :
hdfs dfs -ls /user/labex/file-lifecycle/scratch /user/labex/file-lifecycle/archive
L’entrée de l’archive doit se terminer par /archive/products-reviewed.txt ; aucune entrée review.txt ne doit se trouver dans scratch. Confirmez que le fichier brut n’a pas été affecté :
hdfs dfs -cat /user/labex/file-lifecycle/raw/products.txt
Ses trois lignes doivent toujours correspondre. Si vous revenez à cette étape après l’avoir terminée, examinez l’archive existante au lieu de réexécuter la paire copie/déplacement : -mv a déjà retiré la source de scratch, et une archive existante ne doit pas être écrasée sans réflexion.
Exporter et mesurer vos fichiers
Dans cette étape, vous téléchargerez le fichier archivé et examinerez le nombre de fichiers et l’espace de stockage utilisé.
L’opération -get copie une source HDFS vers une destination locale. Le premier chemin ci-dessous est dans HDFS ; le second est local :
hdfs dfs -get /user/labex/file-lifecycle/archive/products-reviewed.txt /home/labex/project/output/products-exported.txt
L’invite doit réapparaître sans sortie. Si le téléchargement est déjà terminé, examinez la destination locale ; télécharger à nouveau vers un fichier existant peut produire un message indiquant qu’il existe. Utilisez la commande locale diff pour vérifier le contenu, comme dans le premier lab :
diff /home/labex/project/data/products.txt /home/labex/project/output/products-exported.txt
Aucune différence ne doit apparaître. Il s’agit d’une copie exportée : l’archive HDFS et l’original local restent tous deux présents.
Pour mesurer le contenu d’un répertoire, -count affiche le nombre de répertoires, le nombre de fichiers, la taille du contenu en octets et le chemin. Le nombre de répertoires inclut le répertoire indiqué lui-même :
hdfs dfs -count /user/labex/file-lifecycle/raw /user/labex/file-lifecycle/archive
Chaque ligne doit décrire un répertoire contenant un fichier. Les deux lignes doivent indiquer la même taille de contenu, car les octets archivés correspondent aux octets bruts. Enregistrez les lignes réelles :
hdfs dfs -count /user/labex/file-lifecycle/raw /user/labex/file-lifecycle/archive > /home/labex/project/output/file-counts.txt
L’opération -du récapitule les tailles des fichiers. -h choisit des unités faciles à lire lorsque c’est utile :
hdfs dfs -du -h /user/labex/file-lifecycle/raw
Les colonnes indiquent la taille du contenu, l’espace consommé avec les répliques et le chemin. Cet environnement utilise un facteur de réplication de 1 : les deux colonnes de taille doivent donc correspondre pour ce fichier. Vous explorerez les blocs et la réplication dans un prochain lab ; une deuxième colonne plus grande dans un autre environnement ne signifie pas nécessairement davantage de données métier.
Avant de continuer, reformulez les limites de chaque opération : -cp est resté dans HDFS, -mv a modifié un chemin HDFS et -get a créé une copie locale.
Supprimer uniquement une copie jetable
Dans cette étape, vous examinerez la politique de suppression et supprimerez un fichier temporaire connu tout en conservant l’entrée et l’archive.
La suppression est une opération différente : lorsqu’un fichier n’est plus nécessaire, son chemin peut être retiré. HDFS peut disposer d’une politique de conservation dans une corbeille (Trash), mais la récupération n’est pas garantie simplement parce que vous utilisez HDFS. Lisez d’abord l’intervalle de conservation de la corbeille configuré, en minutes :
hdfs getconf -confKey fs.trash.interval
L’environnement préparé utilise 0, ce qui signifie que la conservation dans la corbeille est désactivée. Considérez ici toute suppression comme immédiate. Une valeur positive dans un autre environnement active un intervalle de conservation, mais ne remplace pas la préservation des entrées de confiance.
Créez une copie dont le seul but est de vous exercer à la suppression :
hdfs dfs -cp /user/labex/file-lifecycle/raw/products.txt /user/labex/file-lifecycle/scratch/disposable.txt
Avant de supprimer quoi que ce soit, listez la cible exacte :
hdfs dfs -ls /user/labex/file-lifecycle/scratch/disposable.txt
Vérifiez que le chemin se termine par scratch/disposable.txt, et non par raw/products.txt ou l’archive. L’opération -rm supprime le fichier indiqué. Vous n’avez besoin ni de suppression récursive ni de caractère générique :
hdfs dfs -rm /user/labex/file-lifecycle/scratch/disposable.txt
La commande signale que le fichier nommé a été supprimé. La répéter signalerait un fichier manquant ; c’est une raison d’examiner l’état, plutôt que d’élargir la cible de suppression. Listez scratch pour confirmer qu’il ne contient plus de fichiers temporaires :
hdfs dfs -ls /user/labex/file-lifecycle/scratch
Un répertoire vide ne produit aucune entrée de fichier. Enfin, examinez les deux fichiers qui doivent rester :
hdfs dfs -ls /user/labex/file-lifecycle/raw/products.txt /user/labex/file-lifecycle/archive/products-reviewed.txt
Les deux chemins doivent être listés. Vous avez accompli un cycle de vie sans sacrifier l’original : téléverser, copier, archiver, exporter, mesurer et supprimer uniquement le travail temporaire.
Résumé
Vous avez conservé les données brutes intactes en créant une copie de révision, en déplaçant cette copie dans une archive et en l’exportant vers le système de fichiers local. Vous avez interprété les nombres de fichiers et les tailles de stockage, examiné le paramètre de la corbeille et supprimé uniquement un fichier jetable nommé.
Vous appliquerez ensuite ces habitudes à des lots quotidiens contenant plusieurs fichiers. Savoir quels fichiers appartiennent à un lot compte autant que savoir les téléverser.



