Cloud Storage è una parte fondamentale dell'archiviazione e dell'utilizzo dei big data su Google Cloud. Ad esempio, puoi utilizzare Cloud Storage per caricare dati in BigQuery, archiviare file temporanei e dati temporanei per le pipeline Dataflow e integrare Dataproc, in modo da eseguire job Apache Hadoop o Apache Spark direttamente sui dati in Cloud Storage.
In questa pagina viene descritto come utilizzare lo strumento a riga di comando gcloud per semplificare le attività relative ai big data, come la copia di file di grandi dimensioni o la copia di molti file in parallelo. Per un'introduzione a gcloud, consulta la guida rapida di gcloud.
Prima di iniziare
Per ottenere il massimo dagli esempi mostrati in questa pagina, devi completare quanto segue (se non l'hai ancora fatto):
- Installa gcloud CLI.
- Inizializza gcloud CLI.
Copia di molti file in un bucket in corso...
Il comando cp
consente di caricare in modo efficiente un numero elevato di file eseguendo automaticamente copie in parallelo (multi-thread/multi-elaborazione) a seconda delle esigenze. Per copiare in modo ricorsivo le sottodirectory, utilizza il flag --recursive
nel comando.
Ad esempio, per copiare in un bucket file contenenti sottodirectory da una directory locale denominata top-level-dir
, puoi utilizzare:
gcloud storage cp top-level-dir gs://example-bucket --recursive
Puoi utilizzare i caratteri jolly per associare un insieme specifico di
nomi per un'operazione. Ad esempio, per copiare solo i file che iniziano con image
:
gcloud storage cp top-level-dir/subdir/image* gs://example-bucket --recursive
Puoi rimuovere file utilizzando lo stesso carattere jolly:
gcloud storage rm gs://example-bucket/top-level-dir/subdir/image*
Oltre a copiare i file locali nel cloud e viceversa, puoi copiarli anche nel cloud, ad esempio:
gcloud storage cp gs://example-bucket/top-level-dir/subdir/** gs://example-bucket/top-level-dir/subdir/subdir2
gcloud storage
rileva automaticamente che stai spostando più file e li crea in una nuova directory denominata subdir2
.
Sincronizzazione di una directory locale
Se vuoi sincronizzare una directory locale con un bucket o viceversa,
puoi farlo con il comando gcloud storage rsync
. Ad esempio,
per far sì che gs://example-bucket
corrisponda ai contenuti della directory locale
local-dir
puoi usare:
gcloud storage rsync local-dir gs://example-bucket --recursive
L'utilizzo del flag --delete-unmatched-destination-objects
segnala al comando di eliminare nella destinazione (gs://example-bucket
nel comando sopra) file che non sono presenti nell'origine (local-dir
). Puoi anche eseguire la sincronizzazione tra due bucket.
Copia di file di grandi dimensioni in un bucket
In generale, quando si lavora con i big data, una volta che i dati sono nel cloud dovrebbero rimanere lì. Una volta che i dati sono in Google Cloud, è molto veloce trasferirli ad altri servizi nella stessa località, come Compute Engine.
Per copiare un file locale di grandi dimensioni in un bucket, utilizza:
gcloud storage cp local-file gs://example-bucket
Per copiare un file di grandi dimensioni da un bucket esistente, utilizza:
gcloud storage cp gs://example-source-bucket/file gs://example-destination-bucket
gcloud storage
sfrutta tutti i vantaggi delle funzionalità di caricamento e download ripristinabili di Cloud Storage. Per i file di grandi dimensioni questo è particolarmente importante perché la probabilità di un guasto di rete presso il tuo ISP aumenta con le dimensioni dei dati trasferiti. Riprendendo un caricamento in base al numero di byte effettivamente ricevuti dal server, gcloud storage
evita di inviare di nuovo inutilmente dei byte e assicura che il caricamento possa essere completato. La stessa logica viene applicata ai download in base alle dimensioni del
file locale.
Configurazione di un bucket
Alcune attività tipiche dei big data in cui vuoi configurare un bucket includono lo spostamento dei dati in una classe di archiviazione diversa, la configurazione del controllo delle versioni degli oggetti o l'impostazione di una regola del ciclo di vita.
Puoi elencare i dettagli di configurazione di un bucket con buckets describe
:
gcloud storage buckets describe gs://example-bucket
Nell'output, nota le informazioni di configurazione del bucket, la maggior parte delle quali
è configurabile anche tramite gcloud storage
:
- CORS: controlla le impostazioni di condivisione delle risorse tra origini per un bucket.
- Sito web: consente agli oggetti nel bucket di agire come pagine web o come asset statici in un sito web.
- Controllo delle versioni: causa l'eliminazione degli oggetti nel bucket per creare versioni non correnti.
- Classe di archiviazione: consente di impostare la classe di archiviazione impostata durante la creazione del bucket.
- Ciclo di vita: consente l'esecuzione di operazioni periodiche sul bucket, il più comune è l'eliminazione di oggetti inattivi.
Ad esempio, supponi di voler conservare i file in un determinato bucket solo per un giorno, quindi puoi impostare la regola del ciclo di vita per il bucket con:
echo '{ "rule": [{ "action": {"type": "Delete"}, "condition": {"age": 1}}]}' > lifecycle_config.json
gcloud storage buckets update gs://example-bucket --lifecycle-file=lifecycle_config.json
Ora, tutti gli oggetti nel bucket più vecchi di un giorno verranno eliminati automaticamente da questo bucket. Puoi verificare la configurazione appena impostata con il comando buckets describe
(gli altri comandi di configurazione funzionano in modo simile):
gcloud storage buckets describe gs://example-bucket
Condivisione dei dati in un bucket
Quando lavori con i big data, probabilmente lavorerai sui file in modo collaborativo e dovrai essere in grado di concedere l'accesso a persone o gruppi specifici.
I criteri di Identity and Access Management definiscono chi può accedere ai tuoi file e cosa è autorizzato a fare. Puoi visualizzare il criterio IAM di un bucket utilizzando il comando buckets get-iam-policy
:
gcloud storage buckets get-iam-policy gs://example-bucket
La risposta al comando mostra le entità, ovvero gli account a cui è stato concesso l'accesso al tuo bucket, e i ruoli, che sono gruppi di autorizzazioni concesse alle entità.
Tre scenari comuni per la condivisione di dati sono la condivisione pubblica e quella con un gruppo e con una persona:
Condivisione pubblica: per un bucket i cui contenuti devono essere elencati e letti da chiunque su internet, puoi configurare il criterio IAM utilizzando la designazione "AllUsers":
bucket di archiviazione gcloud add-iam-policy-binding gs://example-bucket --member=allUsers --role=roles/storage.objectViewer
Condivisione con un gruppo: per i collaboratori che non hanno accesso alle altre risorse Google Cloud, consigliamo di creare un gruppo Google e aggiungerlo al bucket. Ad esempio, per concedere l'accesso al gruppo Google
my-group
, puoi configurare il seguente criterio IAM:bucket di archiviazione gcloud add-iam-policy-binding gs://example-bucket --member=group:my-group@googlegroups.com --role=roles/storage.objectViewer
Per ulteriori informazioni, vedi Uso di un gruppo per controllare l'accesso agli oggetti.
Condivisione con una sola persona: se molti collaboratori sono in grado di condividere l'accesso in blocco, utilizza un gruppo per concedere l'accesso in blocco. Per una persona, puoi concedere l'accesso in lettura nel seguente modo:
bucket di archiviazione gcloud add-iam-policy-binding gs://example-bucket --member=user:liz@gmail.com --role=roles/storage.objectViewer
Pulizia di un secchio
Puoi pulire rapidamente un bucket con il seguente comando:
gcloud storage rm gs://example-bucket/ --recursive
Utilizzo dei checksum
Durante l'esecuzione di copie, i comandi gcloud storage cp
e gcloud storage rsync
convalidano che il checksum del file di origine corrisponda a quello del
file di destinazione. Nel raro caso in cui i checksum non corrispondano, gcloud storage
elimina la copia non valida e visualizza un messaggio di avviso. Per ulteriori informazioni, consulta la convalida del checksum della riga di comando.
Puoi anche utilizzare gcloud storage
per ottenere il checksum di un file in un bucket o calcolare il checksum di un oggetto locale. Ad esempio, supponi di copiare un file di dati pubblici di Cloud Life Sciences nel bucket in uso con:
gcloud storage cp gs://genomics-public-data/1000-genomes/vcf/ALL.chrMT.phase1_samtools_si.20101123.snps.low_coverage.genotypes.vcf gs://example-bucket
Ora puoi recuperare i checksum sia della versione del bucket pubblico del file che della versione del file nel tuo bucket per assicurarti che corrispondano:
gcloud storage objects describe gs://example-bucket/ALL.chrMT.phase1_samtools_si.20101123.snps.low_coverage.genotypes.vcf
gcloud storage objects describe gs://genomics-public-data/1000-genomes/vcf/ALL.chrMT.phase1_samtools_si.20101123.snps.low_coverage.genotypes.vcf
Ora, supponiamo che i dati si trovino in un file in un data center locale e che li abbia copiati in Cloud Storage. Puoi utilizzare gcloud storage hash
per ottenere il checksum del tuo file locale e quindi confrontarlo con il checksum
del file che hai copiato in un bucket. Per ottenere il checksum di un file locale, utilizza:
gcloud storage hash local-file
Valori MD5
Per gli oggetti non composti, l'esecuzione di gcloud storage objects describe
su un oggetto in un bucket restituisce un output come il seguente:
bucket: example-bucket contentType: text/plain crc32c: FTiauw== customTime: '1970-01-01T00:00:00+00:00' etag: CPjo7ILqxsQCEAE= generation: '1629833823159214' id: example-bucket/100MBfile.txt/1629833823159214 kind: storage#object md5Hash: daHmCObxxQdY9P7lp9jj0A== ...
L'esecuzione di gcloud storage hash
su un file locale restituisce un output come il seguente:
--- crc32c_hash: IJfuvg== digest_format: base64 md5_hash: +bqpwgYMTRn0kWmp5HXRMw== url: file.txt
Entrambe le uscite hanno un valore CRC32c e MD5. Non esiste un valore MD5 per gli oggetti compositi, come quelli creati dai caricamenti composti paralleli.