Cloud Storage est un élément clé permettant de stocker des données et d'utiliser le big data sur Google Cloud. Voici quelques exemples :
Charger des données dans BigQuery
Utiliser Dataproc, qui installe automatiquement le connecteur Cloud Storage compatible avec HDFS, ce qui permet d'utiliser des buckets Cloud Storage en parallèle avec HDFS
Stocker des fichiers de préproduction et des données temporaires pour les pipelines Dataflow à l'aide d'un bucket
Pour Dataflow, un bucket Cloud Storage est requis. Son utilisation est facultative, mais recommandée, dans BigQuery et Dataproc.
L'outil de ligne de commande gsutil vous permet d'utiliser facilement et efficacement des buckets et des objets Cloud Storage, en particulier dans des scénarios de big data. Par exemple, avec gsutil, vous pouvez copier plusieurs fichiers simultanément en exécutant une seule commande, copier efficacement des fichiers volumineux, calculer des sommes de contrôle sur vos données et mesurer les performances de votre ordinateur local vers Cloud Storage.
Cette page explique comment utiliser gsutil pour les tâches de big data. Pour accéder à une présentation simplifiée de gsutil, consultez la page Démarrage rapide de l'outil gsutil.
Vous trouverez la documentation détaillée de toutes les commandes gsutil en ligne et dans l'aide intégrée que vous pouvez obtenir en exécutant la commande gsutil help
.
Pour tirer pleinement parti des exemples présentés sur cette page, vous devez disposer des éléments suivants :
- Version 3.7 de Python installée
- gsutil, qui peut être installé en tant que composant de Google Cloud CLI
- gsutil configuré pour accéder aux données protégées
Copier plusieurs fichiers dans un bucket
Si vous devez importer un grand nombre de fichiers, vous pouvez effectuer une copie parallèle (copie multithread/multitraitement) à l'aide de l'option gsutil -m
. Pour copier les sous-répertoires de manière récursive, utilisez l'option -R
de la commande cp
.
Par exemple, pour copier des fichiers incluant des sous-répertoires à partir d'un répertoire local nommé top-level-dir
dans un bucket, vous pouvez exécuter la commande suivante :
gsutil -m cp -R top-level-dir gs://example-bucket
Vous pouvez utiliser des caractères génériques correspondant à un ensemble spécifique de noms pour une opération. Par exemple, pour ne copier que les fichiers commençant par image
:
gsutil -m cp -R top-level-dir/subdir/image* gs://example-bucket
Vous pouvez supprimer des fichiers à l'aide du même caractère générique :
gsutil -m rm gs://example-bucket/top-level-dir/subdir/image*
En plus de copier des fichiers locaux dans le cloud et inversement, vous pouvez également effectuer des copies directement dans le cloud. Exemple :
gsutil -m cp gs://example-bucket/top-level-dir/subdir/** gs://example-bucket/top-level-dir/subdir/subdir2
gsutil détecte automatiquement que vous déplacez plusieurs fichiers et les crée dans un nouveau répertoire nommé subdir2
.
Synchroniser un répertoire local
Pour synchroniser un répertoire local avec un bucket, ou inversement, vous pouvez exécuter la commande gsutil rsync
. Par exemple, pour que gs://example-bucket
corresponde au contenu du répertoire local local-dir
, vous pouvez exécuter la commande suivante :
gsutil -m rsync -r local-dir gs://example-bucket
L'option rsync -d
signale à gsutil qu'il doit supprimer les fichiers de la destination (gs://example-bucket
dans la commande ci-dessus) qui ne figurent pas dans la source (local-dir
). Vous pouvez également synchroniser deux buckets.
Copier des fichiers volumineux dans un bucket
Lorsque vous travaillez avec le big data, vos données sont généralement conservées dans le cloud après leur transfert. Une fois vos données chargées dans le cloud de Google, vous pouvez rapidement les transférer vers d'autres services, tels que Compute Engine. En outre, la sortie des buckets vers les services Google Cloud est gratuite s'ils se trouvent au même emplacement. Pour en savoir plus, consultez la section sur les tarifs du réseau.
Pour copier un fichier local volumineux dans un bucket, exécutez la commande suivante :
gsutil cp local-file gs://example-bucket
Pour copier un fichier volumineux à partir d'un bucket existant (par exemple, les données publiques Cloud Storage), exécutez la commande suivante :
gsutil cp gs://example-source-bucket/file gs://example-destination-bucket
L'outil gsutil tire pleinement parti des fonctionnalités d'importation avec reprise et de téléchargement de Google Cloud Storage. C'est un point particulièrement important pour les fichiers volumineux, car la probabilité d'une panne réseau chez votre FAI augmente avec la taille des données transférées. En reprenant une importation en fonction du nombre d'octets réellement reçus par le serveur, gsutil évite de renvoyer inutilement des octets et garantit la réussite de l'importation. La même logique s'applique pour les téléchargements en fonction de la taille du fichier local.
Si gsutil cp
ne vous offre pas les performances dont vous avez besoin lorsque vous importez des fichiers volumineux, vous pouvez envisager de configurer des importations composites parallèles.
Configurer un bucket
Vous pouvez configurer un bucket pour des tâches de big data courantes, par exemple lorsque vous déplacez des données vers une autre classe de stockage, ou lorsque vous configurez l'accès aux journaux, la gestion des versions des objets ou une règle de cycle de vie.
Vous pouvez répertorier les détails de configuration d'un bucket à l'aide de la commande gsutil ls -L -b
:
gsutil ls -L -b gs://example-bucket
Examinez les informations de configuration du bucket dans le résultat. La plupart d'entre elles peuvent également être configurées avec l'outil gsutil :
- CORS : contrôle les paramètres de partage des ressources entre origines multiples d'un bucket.
- Journalisation : permet de consigner les données d'utilisation du bucket.
- Site Web : permet aux objets du bucket d'agir en tant que pages Web ou d'être utilisés en tant qu'éléments statiques d'un site Web.
- Gestion des versions : supprime les objets du bucket pour créer des versions archivées.
- Classe de stockage : permet de configurer la classe de stockage définie lors de la création du bucket.
- Cycle de vie : permet d'exécuter des opérations périodiques sur le bucket. La plus courante est la suppression d'objets obsolètes.
Par exemple, si vous souhaitez uniquement conserver des fichiers dans un bucket spécifique pendant une journée, vous pouvez configurer l'instruction de cycle de vie du bucket à l'aide de la commande suivante :
echo '{ "rule": [{ "action": {"type": "Delete"}, "condition": {"age": 1}}]}' > lifecycle_config.json
gsutil lifecycle set lifecycle_config.json gs://example-bucket
Tous les objets de votre bucket de plus d'une journée seront désormais automatiquement supprimés de ce bucket. Pour valider la configuration que vous venez de définir, exécutez la commande gsutil lifecycle
(les autres commandes de configuration fonctionnent d'une manière similaire) :
gsutil lifecycle get gs://example-bucket
Partager des données dans un bucket
En utilisant le big data, vous devrez probablement travailler sur des fichiers de manière collaborative. Vous devez donc être en mesure de donner accès à des personnes ou à des groupes spécifiques.
Les stratégies Cloud Identity and Access Management (Cloud IAM) définissent qui peut accéder à vos fichiers et quelles sont les actions autorisées. Vous pouvez afficher la stratégie Cloud IAM d'un bucket à l'aide de la commande gsutil iam
:
gsutil iam get gs://example-bucket
La réponse à la commande affiche les entités principales, qui sont des comptes autorisés à accéder à votre bucket, et les rôles, qui sont des groupes d'autorisations accordées aux entités principales.
Le partage de données présente trois scénarios courants qui sont le partage en mode public, le partage avec un groupe et le partage avec une personne :
Partage en mode public : dans le cas d'un bucket dont le contenu est destiné à être répertorié et lu par tous les internautes, vous pouvez configurer la stratégie IAM à l'aide de la désignation "AllUsers" :
gsutil iam ch AllUsers:objectViewer gs://example-bucket
Partage avec un groupe : pour les collaborateurs qui n'ont pas accès à vos autres ressources Google Cloud, nous vous recommandons de créer un groupe Google et de l'ajouter au bucket. Par exemple, pour accorder l'accès au groupe Google gs-announce, vous pouvez configurer la stratégie IAM suivante :
gsutil iam ch group:gs-announce@googlegroups.com:objectViewer gs://example-bucket
Pour en savoir plus, consultez la section Contrôler l'accès aux objets à l'aide d'un groupe.
Partage avec une personne : dans le cas de nombreux collaborateurs, utilisez un groupe pour accorder un accès groupé. S'il s'agit d'une seule personne, vous pouvez lui accorder un accès en lecture comme suit :
gsutil iam ch user:liz@gmail.com:objectViewer gs://example-bucket
Nettoyer un bucket
Vous pouvez nettoyer rapidement un bucket à l'aide de la commande suivante :
gsutil -m rm gs://example-bucket/**
Utiliser des sommes de contrôle
Lorsque vous effectuez des copies, les commandes gsutil cp
et gsutil rsync
confirment que la somme de contrôle du fichier source correspond à celle du fichier de destination. Dans les rares cas où les sommes de contrôle ne correspondent pas, gsutil supprime la copie non valide et affiche un message d'avertissement. Pour en savoir plus, consultez la section Validation de la somme de contrôle.
Vous pouvez également calculer la somme de contrôle d'un fichier dans un bucket ou d'un objet local à l'aide de l'outil gsutil. Par exemple, supposons que vous copiez un fichier de données publiques Cloud Life Sciences dans votre bucket de travail à l'aide de la commande suivante :
gsutil -m cp gs://genomics-public-data/1000-genomes/vcf/ALL.chrMT.phase1_samtools_si.20101123.snps.low_coverage.genotypes.vcf gs://example-bucket
Vous pouvez désormais obtenir les sommes de contrôle de la version du fichier du bucket public et de celle de votre bucket pour vous assurer qu'elles correspondent :
gsutil ls -L gs://example-bucket/ALL.chrMT.phase1_samtools_si.20101123.snps.low_coverage.genotypes.vcf
gsutil ls -L gs://genomics-public-data/1000-genomes/vcf/ALL.chrMT.phase1_samtools_si.20101123.snps.low_coverage.genotypes.vcf
Supposons maintenant que vos données se trouvent dans un fichier dans un centre de données local, et que vous les avez copiées dans Cloud Storage. La commande gsutil hash
permet d'obtenir la somme de contrôle de votre fichier local, puis de la comparer à celle du fichier copié dans un bucket. Pour obtenir la somme de contrôle d'un fichier local, exécutez la commande suivante :
gsutil hash local-file
Valeurs MD5
L'exécution de la commande gsutil ls -L
sur des objets non composites dans un bucket renvoie un résultat semblable à celui-ci :
gs://example-bucket/100MBfile.txt: Creation time: Thu, 26 Mar 2015 20:11:51 GMT Content-Length: 102400000 Content-Type: text/plain Hash (crc32c): FTiauw== Hash (md5): daHmCObxxQdY9P7lp9jj0A== ETag: CPjo7ILqxsQCEAE= Generation: 1427400711419000 Metageneration: 1 ACL: [ ....
L'exécution de la commande gsutil hash
sur un fichier local renvoie un résultat semblable à celui-ci :
Hashing 100MBfile.txt: Hashes [base64] for 100MBfile.txt: Hash (crc32c): FTiauw== Hash (md5): daHmCObxxQdY9P7lp9jj0A==
Les deux résultats ont une valeur CRC32c et MD5. Les objets composites n'ont pas de valeur MD5, tout comme ceux créés par le biais d'importations composites parallèles.
Étapes suivantes
- Mesurez la taille totale et le nombre d'objets dans un bucket.