Cloud Storage spielt beim Speichern und Arbeiten mit Big Data in Google Cloud eine wichtige Rolle. Sie können beispielsweise Cloud Storage verwenden, um Daten in BigQuery zu laden, Staging-Dateien und temporäre Daten für Dataflow-Pipelines zu speichern und mit Dataproc zu integrieren, damit Sie Apache Hadoop- oder Apache Spark-Jobs direkt für Ihre Daten in Cloud Storage ausführen können.
Auf dieser Seite wird beschrieben, wie Sie mit dem gcloud-Befehlszeilentool Big Data-Aufgaben ausführen, z. B. große Dateien parallel kopieren oder viele Dateien parallel kopieren. Eine Einführung in gcloud finden Sie im Schnellstart zu gcloud.
Hinweise
Führen Sie die folgenden Schritte aus, um die auf dieser Seite gezeigten Beispiele optimal zu nutzen:
- Installieren Sie die gcloud CLI.
- Initialisieren Sie die gcloud CLI.
Viele Dateien in einen Bucket kopieren
Mit dem Befehl cp
wird eine große Anzahl von Dateien effizient hochgeladen, indem nach Bedarf automatisch parallele (Multi-Threaded/Multi-Verarbeitung)-Kopien ausgeführt werden. Zum rekursiven Kopieren von Unterverzeichnissen verwenden Sie das Flag --recursive
im Befehl.
So können Sie beispielsweise Dateien mit Unterverzeichnissen aus einem lokalen Verzeichnis namens top-level-dir
in einen Bucket kopieren:
gcloud storage cp top-level-dir gs://example-bucket --recursive
Um einen bestimmten Satz an Namen in einem Vorgang zusammenzufassen, können Sie Platzhalter verwenden. So kopieren Sie beispielsweise nur Dateien, die mit image
beginnen:
gcloud storage cp top-level-dir/subdir/image* gs://example-bucket --recursive
Mit demselben Platzhalter können Sie auch Dateien entfernen:
gcloud storage rm gs://example-bucket/top-level-dir/subdir/image*
Zusätzlich zum Kopieren lokaler Dateien in die Cloud und umgekehrt können Sie diese auch innerhalb der Cloud kopieren:
gcloud storage cp gs://example-bucket/top-level-dir/subdir/** gs://example-bucket/top-level-dir/subdir/subdir2
gcloud storage
erkennt automatisch, dass Sie mehrere Dateien verschieben, und erstellt sie in einem neuen Verzeichnis mit dem Namen subdir2
.
Lokales Verzeichnis synchronisieren
Zum Synchronisieren eines lokalen Verzeichnisses mit einem Bucket oder umgekehrt verwenden Sie den Befehl gcloud storage rsync
. So sorgen Sie zum Beispiel dafür, dass gs://example-bucket
dem Inhalt des lokalen Verzeichnisses local-dir
entspricht:
gcloud storage rsync local-dir gs://example-bucket --recursive
Wenn Sie das Flag --delete-unmatched-destination-objects
verwenden, signalisiert es dem Befehl, Dateien am Ziel (gs://example-bucket
im obigen Befehl) zu löschen, die in der Quelle (local-dir
) nicht vorhanden sind. Sie können auch zwischen zwei Buckets synchronisieren.
Große Dateien in einen Bucket kopieren
Bei der Arbeit mit Big Data gilt im Allgemeinen, dass Ihre Daten in der Cloud bleiben sollten, sobald sie dort sind. Nachdem Sie die Daten in Google Cloud gespeichert haben, lassen sie sich sehr schnell in andere Dienste am selben Standort übertragen, z. B. in Compute Engine.
So kopieren Sie eine große lokale Datei in einen Bucket:
gcloud storage cp local-file gs://example-bucket
So kopieren Sie eine große Datei aus einem vorhandenen Bucket:
gcloud storage cp gs://example-source-bucket/file gs://example-destination-bucket
gcloud storage
nutzt dabei die Cloud Storage-Funktionen für fortsetzbare Uploads und Downloadfunktionen. Bei großen Dateien ist dies besonders wichtig, da die Wahrscheinlichkeit eines Netzwerkfehlers bei Ihrem ISP mit dem Umfang der übertragenen Daten zunimmt. Durch die Wiederaufnahme eines Uploads je nachdem, wie viele Byte der Server tatsächlich empfangen hat, vermeidet gcloud storage
das erneute Senden von Daten und sorgt dafür, dass der Upload abgeschlossen werden kann. Die gleiche Logik wird für Downloads basierend auf der Größe der lokalen Datei angewendet.
Bucket konfigurieren
Typische Big Data-Aufgaben, für die Sie einen Bucket konfigurieren, umfassen beispielsweise das Verschieben von Daten in eine andere Speicherklasse, das Konfigurieren der Objektversionsverwaltung, oder das Einrichten einer Lebenszyklusregel.
Sie können die Konfigurationsdetails eines Buckets mit buckets describe
auflisten:
gcloud storage buckets describe gs://example-bucket
Die Ausgabe enthält die Bucket-Konfigurationsinformationen, von denen die meisten auch über gcloud storage
konfiguriert werden können:
- CORS: steuert die Einstellungen für die Cross-Origin-Ressourcenfreigabe für einen Bucket.
- Website: ermöglicht Objekten im Bucket, als Webseiten zu fungieren oder als statische Elemente auf einer Website verwendet zu werden.
- Versionierung: veranlasst Objektlöschungen im Bucket, um nicht aktuelle Versionen zu erstellen.
- Speicherklasse: ermöglicht das Festlegen der Speicherklasse beim Erstellen eines Buckets.
- Lebenszyklus: ermöglicht die Ausführung regelmäßiger Vorgänge für einen Bucket (am häufigsten das Löschen veralteter Objekte).
Wenn Sie Dateien in einem bestimmten Bucket nur einen Tag aufbewahren möchten, können Sie die Lebenszyklusregel für den Bucket z. B. so einrichten:
echo '{ "rule": [{ "action": {"type": "Delete"}, "condition": {"age": 1}}]}' > lifecycle_config.json
gcloud storage buckets update gs://example-bucket --lifecycle-file=lifecycle_config.json
Damit werden alle Objekte in Ihrem Bucket, die älter als einen Tag sind, automatisch daraus gelöscht. Mit dem Befehl buckets describe
können Sie die gerade festgelegte Konfiguration überprüfen (andere Konfigurationsbefehle funktionieren ähnlich):
gcloud storage buckets describe gs://example-bucket
Daten in einem Bucket freigeben
Beim Umgang mit Big Data werden Sie wahrscheinlich gemeinsam mit anderen an Dateien arbeiten und müssen in der Lage sein, bestimmten Personen oder Gruppen Zugriff zu gewähren.
Mit Richtlinien für Identity and Access Management können Sie festlegen, wer auf Ihre Dateien zugreifen kann und welche Berechtigungen diese Nutzer erhalten. Sie können die IAM-Richtlinie eines Buckets mit dem Befehl buckets get-iam-policy
anzeigen lassen:
gcloud storage buckets get-iam-policy gs://example-bucket
In der Antwort auf den Befehl werden Hauptkonten und Rollen angezeigt. Hauptkonten sind hierbei Konten, die Zugriff auf Ihren Bucket haben, und Rollen sind Gruppen mit Berechtigungen, die den Hauptkonten gewährt wurden.
Drei gängige Szenarien für die Freigabe von Daten sind die öffentliche Freigabe, die Freigabe für eine Gruppe und die Freigabe für eine Person:
Öffentlich teilen: Für einen Bucket, dessen Inhalt von jedem im Internet aufgelistet und gelesen werden soll, können Sie die IAM-Richtlinie mit der Bezeichnung "AllUsers" konfigurieren:
gcloud storage buckets add-iam-policy-binding gs://example-bucket --member=allUsers --role=roles/storage.objectViewer
Freigabe für eine Gruppe: Für Mitbearbeiter, die keinen Zugriff auf Ihre anderen Google Cloud-Ressourcen haben, empfehlen wir, eine Google-Gruppe zu erstellen und dann die Google-Gruppe zum Bucket hinzuzufügen Wenn Sie beispielsweise Zugriff auf die Google-Gruppe
my-group
gewähren möchten, können Sie die folgende IAM-Richtlinie konfigurieren:gcloud storage buckets add-iam-policy-binding gs://example-bucket --member=group:[email protected] --role=roles/storage.objectViewer
Weitere Informationen finden Sie unter Eine Gruppe für die Zugriffssteuerung verwenden.
Freigabe für eine Person: Verwenden Sie für viele Mitbearbeiter eine Gruppe, um Zugriff im Bulk zu gewähren. So gewähren Sie einer Person Lesezugriff:
gcloud storage buckets add-iam-policy-binding gs://example-bucket --member=user:[email protected] --role=roles/storage.objectViewer
Bucket bereinigen
Mit dem folgenden Befehl können Sie einen Bucket schnell bereinigen:
gcloud storage rm gs://example-bucket/ --recursive
Mit Prüfsummen arbeiten
Wenn Sie Kopien erstellen, können Sie mit den Befehlen gcloud storage cp
und gcloud storage rsync
überprüfen, ob die Prüfsumme der Quelldatei mit der Prüfsumme der Zieldatei übereinstimmt. Sollte dies ausnahmsweise nicht der Fall sein, löscht gcloud storage
die ungültige Kopie und gibt eine Warnmeldung aus. Weitere Informationen finden Sie unter Prüfsummenverifizierung.
Mit gcloud storage
können Sie auch die Prüfsumme einer Datei in einem Bucket abrufen oder die Prüfsumme eines lokalen Objekts berechnen. Nehmen wir zum Beispiel an, Sie kopieren eine Datei mit öffentlichen Daten aus Cloud Life Sciences in Ihren Arbeits-Bucket mit:
gcloud storage cp gs://genomics-public-data/1000-genomes/vcf/ALL.chrMT.phase1_samtools_si.20101123.snps.low_coverage.genotypes.vcf gs://example-bucket
Jetzt können Sie die Prüfsummen der öffentlichen Bucket-Version der Datei und der Dateiversion in Ihrem Bucket abrufen, um sicherzustellen, dass sie übereinstimmen:
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
Angenommen, Ihre Daten befinden sich in einer Datei in einem lokalen Rechenzentrum und Sie haben die Dateien in Cloud Storage kopiert. Mit gcloud storage hash
können Sie die Prüfsumme Ihrer lokalen Datei abrufen und mit der Prüfsumme der Datei vergleichen, die Sie in einen Bucket kopiert haben. Die Prüfsumme einer lokalen Datei rufen Sie folgendermaßen ab:
gcloud storage hash local-file
MD5-Werte
Bei nicht zusammengesetzten Objekten gibt gcloud storage objects describe
für ein Objekt in einem Bucket folgende Ausgabe aus:
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== ...
Bei einer lokalen Datei gibt gcloud storage hash
dagegen Folgendes aus:
--- crc32c_hash: IJfuvg== digest_format: base64 md5_hash: +bqpwgYMTRn0kWmp5HXRMw== url: file.txt
Beide Ausgaben haben einen CRC32c- und einen MD5-Wert. Für zusammengesetzte Objekte gibt es keinen MD5-Wert, z. B. für aus parallelen zusammengesetzten Uploads erstellte Objekte.