Utiliser le stockage objet (S3) depuis la plateforme de calcul¶
Les utilitaires rclone
, s3cmd
et s3fs
sont disponibles sur la plateforme de calcul VALERIA. Ces outils permettent de manipuler les données du stockage objet (S3). Ils permettent aussi de "monter" un compartiment afin que son contenu soit accessible sur la plateforme de calcul.
Prérequis¶
- Avoir configuré les clients S3 sur la plateforme de calcul.
Astuce
Un outil a été développé par l'équipe de VALERIA pour automatiser la configuration des principaux clients S3 (rclone, s3cmd, s3fs et awscli) sur la plateforme de calcul. Pour lancer la configuration, il suffit de lancer la commande val-generate-s3-config
sur une invite de commande.
Exemples d'utilisation¶
Créer un compartiment¶
Lister mes compartiments¶
Lister le contenu d'un compartiment¶
Note
Par défaut, l'outil rclone liste de manière récursive. Ce n'est pas le cas avec s3cmd.
- Pour limiter la récursion avec rclone, utiliser l'option
--max-depth 1
. - Pour lister de manière récursive avec s3cmd, utiliser l'option
-r
.
Taille et chemin des objets seulement :
Taille, date et chemin des objets :
Lister les dossiers seulement :
Copier des fichiers¶
Info
La commande rclone copy
ne recopie pas les fichiers qui sont déjà présents. Aussi, aucune suppression n'est effectuée sur la destination. S'il est désiré de rendre la destination identique à la source, utiliser la commande rclone sync
.
Copier un fichier seul :
rclone copy --progress fichier.txt s3:/<COMPARTIMENT>
rclone copy --progress fichier.txt s3:/<COMPARTIMENT>/<DOSSIER>/
rclone copy --progress fichier.txt s3:/<COMPARTIMENT>/<DOSSIER>/<NOUVEAU NOM>.txt
Copier un dossier complet :
Synchroniser des fichiers¶
Rend la destination identique à la source. Si vous ne désirez pas supprimer les fichiers à la destination, utiliser la commande rclone copy
.
Référence :
Consulter mon utilisation¶
Attention
Ces commandes nécessitent de naviguer à travers tout votre stockage objet (S3) et doivent effectuer un grand nombre de requêtes vers celui-ci. Il est avisé d'utiliser ces commandes avec parcimonie et d'en faire bon usage.
Rclone est le meilleur outil pour consulter votre utilisation, autant pour le nombre d'objets ou la taille occupée.
rclone size
Affiche simplement la taille totale et le nombre d'objets :
- pour l'ensemble de votre stockage s3 :
rclone size s3:
- pour un compartiment en particulier :
rclone size s3:<COMPARTIMENT>
rclone ncdu
Permet de visualiser et naviguer de manière interactive votre stockage distant :
- pour visualiser l'ensemble de vos compartiments et leur taille :
rclone ncdu s3:
- pour visualiser directement un compartiment :
rclone ncdu s3://<COMPARTIMENT>
Supprimer un fichier¶
Supprimer un dossier et son contenu¶
Supprimer un compartiment et son contenu¶
Attention
Ces actions sont irréversibles : sans prise de copie au préalable, ces instructions suppriment définitivement un compartiment et son contenu.
Monter un compartiment¶
Il est possible de monter un compartiment afin qu'il soit accessible comme si c'était un système de fichier POSIX, comme sur la plateforme de calcul.
Rappel
Sur la plateforme de calcul, il faut avoir configuré les clients S3 en exécutant l'utilitaire /public/utils/val-generate-s3-config
Exporter le nom du compartiment que vous voulez monter :
Exécuter ensuite ces commandes pour créer le point de montage et effectuer le montage :
Maintenant, les fichiers sont accessibles dans le dossier ~/s3/${COMPARTIMENT}
.
À la fin de la tâche, quelle soit à partir d'un terminal ou de jupyterlab, tous les points de montages seront démontés.
Python¶
Pour plus de détails sur les installation de module et les environnements virtuels Python, veuillez visiter la section correspondante.
Exemple de code pour consommer les fichiers directement dans le stockage objet (S3) à l'aide de Pandas :
import s3fs
import pandas as pd
ENDPOINT_URL = 'https://s3.valeria.science'
bucket = 'taxidata'
key = 'fhv_tripdata_2017-03.csv'
df = pd.read_csv(f"s3://{bucket}/{key}",
storage_options={"client_kwargs": {'endpoint_url': ENDPOINT_URL}})
df.head()
Traitements en lots¶
Il existe 3 options pour effectuer des traitements en lots sur des données hébergées sur le stockage objet (S3) de VALERIA.
Option 1 - Copier les données dans le stockage haute-performance (Lustre)¶
Soit dans vos répertoires $HOME, $HOME/scratch/ ou les répertoires sous $HOME/projects/.
Cette option est à privilégier si les données sont lus répétitivement depuis plusieurs tâches distribuées sur plusieurs serveurs.
L'accès aux données sera moins performant que l'option 2, mais les données ne seront copiés qu'une fois.
Option 2 - Copier les données localement¶
Soit dans un répertoire « localscratch » créé avec la commande val-mktemp-dir
.
À privilégier si les données doivent être lues répétitivement depuis un seul serveur.
Option 3 - Monter le compartiment S3 avec rclone/s3fs¶
Cette option permet d'accéder aux données S3 directement en émulant un système de fichiers POSIX. Elle est à privilégier si les accès sont séquentiels ou non-répétitifs sur les mêmes données. Contrairement à l'option 1, on accède immédiatement aux données, car il n'y a pas d'étape de copie.
Avantages :
- Permet de ne pas modifier son code existant, si celui-ci consomme déjà des fichiers dans un système de fichier « régulier »
- Rend le code plus portable avec les personnes collaboratrices
- Le code nécessaire pour consommer directement les fichiers dans S3 est souvent plus complexe
Pour plus d'informations sur cette option, veuillez consulter la section Monter un compartiment ci-dessus.