Utilizzo di Cloud Storage con i big data

Cloud Storage è una parte fondamentale dell'archiviazione e dell'utilizzo dei big data su in Google Cloud. Ad esempio, puoi utilizzare Cloud Storage per caricare i dati in BigQuery, conservare i file temporanei e i dati temporanei le pipeline di Dataflow e l'integrazione con Dataproc, puoi eseguire job Apache Hadoop o Apache Spark direttamente sui tuoi dati di archiviazione ideale in Cloud Storage.

Questa pagina descrive come utilizzare lo strumento a riga di comando gcloud per eseguire attività di big data, come la copia di file di grandi dimensioni o 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):

Copia di molti file in un bucket in corso...

Il comando cp carica in modo efficiente grandi quantità di file tramite eseguire copie parallele (multi-thread/multi-elaborazione) in base alle esigenze. Per copiare in modo ricorsivo le sottodirectory, utilizza il flag --recursive nel comando. Ad esempio, per copiare file, incluse sottodirectory, da una directory locale top-level-dir in un bucket, puoi utilizzare:

gcloud storage cp top-level-dir gs://example-bucket --recursive

Puoi utilizzare i caratteri jolly per far corrispondere un insieme specifico i nomi di 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 anche di testo 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 fare in modo che gs://example-bucket corrisponda ai contenuti della directory locale local-dir, puoi utilizzare:

gcloud storage rsync local-dir gs://example-bucket --recursive

Se utilizzi il flag --delete-unmatched-destination-objects, il comando indica di eliminare i file nella destinazione (gs://example-bucket nel comando precedente) che non sono presenti nell'origine (local-dir). Puoi anche eseguire la sincronizzazione tra due bucket.

Copiare file di grandi dimensioni in un bucket

In generale, quando si lavora con i big data, una volta che i dati sono nel cloud dovrebbe rimanere lì. Una volta che i dati sono in Google Cloud, è molto rapido trasferirli ad altri servizi nella stessa posizione, ad esempio Compute Engine.

Per copiare un file locale di grandi dimensioni in un bucket, usa:

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 appieno le funzionalità di caricamento e scaricamento con ripresa di Cloud Storage. Per i file di grandi dimensioni questo è particolarmente importante perché la probabilità di un errore di rete presso il tuo ISP aumenta con la dimensione dei dati in fase di trasferimento. Riprendendo un caricamento in base al numero di byte del server effettivamente ricevuto, gcloud storage evita di nuovo inutilmente byte e assicura che il caricamento alla fine essere completato. La stessa logica viene applicata per i download in base alle dimensioni del file locale.

Configurazione di un bucket

Le tipiche attività di big data in cui si desidera configurare un bucket includono quando Spostare i dati in un'altra classe di archiviazione configurare il controllo delle versioni degli oggetti oppure un 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, puoi notare le informazioni di configurazione del bucket, la maggior parte delle quali sono configurabile anche tramite gcloud storage:

  • CORS: controlla la condivisione delle risorse tra origini le impostazioni di un bucket.
  • Sito web: consente gli oggetti nel che funga da pagine web o che possa essere utilizzato come asset statici in un sito web.
  • Controllo delle versioni: le eliminazioni degli oggetti nel bucket generano versioni non correnti.
  • Classe di archiviazione: consente di impostare la classe di archiviazione durante la creazione del bucket.
  • Ciclo di vita: consente di eseguire operazioni periodiche sul bucket, la più comune è l'eliminazione di oggetti obsoleti.

Ad esempio, supponiamo che tu voglia conservare i file in un determinato bucket solo per un giorno. In questo caso, puoi configurare 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 che risalgono a più di un giorno fa 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 devi poter dare accesso a persone o gruppi specifici. I criteri di Identity and Access Management definiscono chi può accedere ai tuoi file e cosa è consentito da fare. Puoi visualizzare il criterio IAM di un bucket utilizzando Comando buckets get-iam-policy:

gcloud storage buckets get-iam-policy gs://example-bucket

La risposta al comando mostra gli principali, ovvero gli account a cui è stato concesso l'accesso al bucket, e i ruoli, ovvero i gruppi di autorizzazioni concesse ai principali.

Esistono tre scenari comuni per la condivisione dei dati: condivisione pubblica, condivisione con un gruppo e condivisione con una persona:

  • Condivisione pubblica: per un bucket i cui contenuti devono essere elencati e letti da chiunque su internet, puoi configurare utilizzando il criterio "AllUsers" designazione:

    gcloud storage buckets 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, ti consigliamo di creare un gruppo Google e di aggiungerlo al bucket. Ad esempio, per concedere l'accesso al gruppo Google my-group, puoi configurare il seguente criterio IAM:

    gcloud storage buckets add-iam-policy-binding gs://example-bucket --member=group:my-group@googlegroups.com --role=roles/storage.objectViewer

    Per ulteriori informazioni, consulta la sezione Utilizzo di un gruppo per controllare l'accesso agli oggetti.

  • Condivisione con una sola persona: per molti collaboratori, utilizza un gruppo per concedere per accedere 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

Ripulire un bucket

Puoi pulire rapidamente un bucket con il seguente comando:

gcloud storage rm gs://example-bucket/ --recursive

Utilizzo dei checksum

Quando esegui le copie, i comandi gcloud storage cp e gcloud storage rsync verificano che il checksum del file di origine corrisponda al checksum del file di destinazione. Nel raro caso in cui i checksum non corrispondano, gcloud storage elimina la copia non valida e stampa un messaggio di avviso. Per maggiori informazioni informazioni, consulta la sezione sulla convalida del checksum.

Puoi utilizzare gcloud storage per ottenere il checksum di un oggetto in un bucket. Per Ad esempio, supponi di copiare un dati pubblici Landsat al tuo bucket di lavoro con:

gcloud storage cp gs://gcp-public-data-landsat/LC08/01/001/003/LC08_L1GT_001003_20140812_20170420_01_T2/LC08_L1GT_001003_20140812_20170420_01_T2_B3.TIF gs://example-bucket

Ora puoi ottenere i checksum di entrambe le versioni del bucket pubblico e la tua versione del file nel bucket per assicurarti che corrispondano:

gcloud storage objects describe gs://example-bucket/LC08_L1GT_001003_20140812_20170420_01_T2_B3.TIF
gcloud storage objects describe gs://gcp-public-data-landsat/LC08/01/001/003/LC08_L1GT_001003_20140812_20170420_01_T2/LC08_L1GT_001003_20140812_20170420_01_T2_B3.TIF

Puoi anche utilizzare gcloud storage per calcolare il checksum di un file locale. Per Ad esempio, 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 file locale e confrontarlo con quello 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 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 simile al seguente:

---
crc32c_hash: IJfuvg==
digest_format: base64
md5_hash: +bqpwgYMTRn0kWmp5HXRMw==
url: file.txt

Entrambi gli output hanno un valore CRC32c e MD5. Nessun valore MD5 per l'elemento composito di oggetti, come quelli creati da caricamenti compositi paralleli.

Passaggi successivi