Mit der Open-Source-Java-Bibliothek des Cloud Storage-Connectors können Sie Apache Hadoop- oder Apache Spark-Jobs direkt für Daten in Cloud Storage ausführen.
Vorteile des Cloud Storage-Connectors
- Direkter Datenzugriff:Sie speichern Ihre Daten in Cloud Storage und greifen direkt darauf zu. Sie müssen sie nicht zuerst in HDFS übertragen.
- HDFS-Kompatibilität:Sie können mit dem Präfix
gs://
anstelle vonhdfs://
auf Ihre Daten in Cloud Storage zugreifen. - Interoperabilität:Das Speichern von Daten in Cloud Storage ermöglicht eine nahtlose Interoperabilität zwischen Spark-, Hadoop- und Google-Diensten.
- Datenzugriff:Wenn Sie einen Hadoop-Cluster herunterfahren, haben Sie im Gegensatz zu HDFS in Cloud Storage weiterhin Zugriff auf Ihre Daten.
- Hohe Datenverfügbarkeit:In Cloud Storage gespeicherte Daten sind hochverfügbar und werden ohne Leistungsverlust global repliziert.
- Kein Speicherverwaltungsaufwand:Im Gegensatz zu HDFS erfordert Cloud Storage keine routinemäßigen Verwaltungsmaßnahmen wie das Überprüfen des Dateisystems, Aktualisieren oder Zurücksetzen auf eine frühere Version des Dateisystems usw.
- Schnellstart:In HDFS kann ein MapReduce-Job erst gestartet werden, wenn sich der
NameNode
außerhalb des abgesicherten Modus befindet. Der Vorgang kann je nach Größe und Status der Daten einige Sekunden bis zu mehreren Minuten in Anspruch nehmen. In Cloud Storage können Sie Jobs zusammen mit den Aufgabenknoten starten. Hierdurch erzielen Sie im Laufe der Zeit erhebliche Kosteneinsparungen.
Connector in Dataproc-Clustern einrichten
Der Cloud Storage-Connector wird standardmäßig auf allen Dataproc-Clusterknoten im Verzeichnis /usr/local/share/google/dataproc/lib/
installiert. In den folgenden Unterabschnitten werden die Schritte beschrieben, die Sie ausführen können, um die Connector-Einrichtung in Dataproc-Clustern abzuschließen.
VM-Dienstkonto
Wenn der Connector auf Dataproc-Clusterknoten und anderen Compute Engine-VMs ausgeführt wird, ist die Eigenschaft google.cloud.auth.service.account.enable
standardmäßig auf false
festgelegt. Das bedeutet, dass Sie die Anmeldedaten für das VM-Dienstkonto für den Connector nicht konfigurieren müssen. Die Anmeldedaten für das VM-Dienstkonto werden vom VM-Metadatenserver bereitgestellt.
Das VM-Dienstkonto von Dataproc muss die Berechtigung für den Zugriff auf Ihren Cloud Storage-Bucket haben.
Vom Nutzer ausgewählte Connector-Versionen
Die Standardversionen des Cloud Storage-Connectors, die in den neuesten Images verwendet werden, die in Dataproc-Clustern installiert sind, sind auf den Seiten mit Image-Versionen aufgeführt. Wenn Ihre Anwendung von einer anderen als der Standard-Connector-Version abhängt, die auf Ihrem Cluster bereitgestellt ist, können Sie eine der folgenden Aktionen ausführen, um die ausgewählte Connector-Version zu verwenden:
- Erstellen Sie einen Cluster mit dem Flag
--metadata=GCS_CONNECTOR_VERSION=x.y.z
. Dadurch wird der von Anwendungen, die im Cluster ausgeführt werden, verwendete Connector auf die angegebene Connector-Version aktualisiert. - Fügen Sie die Connector-Klassen und Connector-Abhängigkeiten für die verwendete Version in das JAR-Objekt Ihrer Anwendung ein und verschieben Sie sie.Das Verschieben ist erforderlich, um Konflikte zwischen der bereitgestellten Connector-Version und der Standard-Connector-Version zu vermeiden, die auf dem Dataproc-Cluster installiert ist. Weitere Informationen finden Sie auch im Beispiel für die Verschiebung von Maven-Abhängigkeiten.
Connector-Einrichtung in Drittanbieter-Dataproc-Clustern
Mit den folgenden Schritten können Sie den Cloud Storage-Connector in einem Cluster einrichten, der nicht zu Dataproc gehört, z. B. in einem Apache Hadoop- oder Spark-Cluster, mit dem Sie lokale HDFS-Daten in Cloud Storage verschieben.
Connector herunterladen
- So laden Sie den Cloud Storage-Connector herunter:
- So verwenden Sie eine
latest
-Version, die sich im Cloud Storage-Bucket befindet (die Verwendung einerlatest
-Version wird für Produktionsanwendungen nicht empfohlen): - Bestimmte Version aus dem Cloud Storage-Bucket, indem Sie die Hadoop- und Cloud Storage-Connector-Versionen im Namensmuster
gcs-connector-HADOOP_VERSION-CONNECTOR_VERSION.jar
ersetzen, z. B.gs://hadoop-lib/gcs/gcs-connector-hadoop2-2.1.1.jar
. - Wenn Sie eine bestimmte Version aus dem Apache Maven-Repository verwenden möchten, laden Sie eine Shaded-JAR-Datei mit dem Suffix
-shaded
im Namen herunter.
- So verwenden Sie eine
- So laden Sie den Cloud Storage-Connector herunter:
Connector installieren
Folgen Sie der GitHub-Anleitung, um den Cloud Storage-Connector zu installieren, zu konfigurieren und zu testen.
Connector-Nutzung
Sie können den Connector auf folgende Arten verwenden, um auf Cloud Storage-Daten zuzugreifen:
- In einer Spark-, PySpark- oder Hadoop-Anwendung mit dem Präfix
gs://
- In einer Hadoop-Shell mit
hadoop fs -ls gs://bucket/dir/file
- Im Cloud Storage-Browser In der Google Cloud Console
- Mit Google Cloud SDK-Befehlen, z. B.:
*
gcloud storage cp
*gcloud storage rsync
Java-Nutzung
Der Cloud Storage-Connector erfordert Java 8.
Im Folgenden finden Sie ein Beispiel für einen Maven-POM-Abschnitt zur Abhängigkeitsverwaltung für den Cloud Storage-Connector. Weitere Informationen finden Sie unter Abhängigkeitsverwaltung.
<dependency> <groupId>com.google.cloud.bigdataoss</groupId> <artifactId>gcs-connector</artifactId> <version>hadoopX-X.X.XCONNECTOR VERSION</version> <scope>provided</scope> </dependency>
Für eine schattierte Version:
<dependency> <groupId>com.google.cloud.bigdataoss</groupId> <artifactId>gcs-connector</artifactId> <version>hadoopX-X.X.XCONNECTOR VERSION</version> <scope>provided</scope> <classifier>shaded</classifier> </dependency>
Connector-Unterstützung
Der Cloud Storage-Connector wird von Google Cloud für die Verwendung mit Google Cloud-Produkten und Anwendungsfällen unterstützt. Bei Verwendung mit Dataproc erhalten Sie für den Connector den gleichen Support wie für Dataproc. Weitere Informationen finden Sie unter Support.
Mit gRPC eine Verbindung zu Cloud Storage herstellen
Standardmäßig verwendet der Cloud Storage-Connector in Dataproc die Cloud Storage JSON API. In diesem Abschnitt erfahren Sie, wie Sie den Cloud Storage-Connector für die Verwendung von gRPC aktivieren.
Nutzungshinweise
Bei der Verwendung des Cloud Storage-Connectors mit gRPC sind die folgenden Aspekte zu beachten:
- Regionaler Speicherort des Buckets:Mit gRPC lassen sich Leselatenzen nur dann verbessern, wenn sich Compute Engine-VMs und Cloud Storage-Buckets in derselben Compute Engine-Region befinden.
- Leseintensive Jobs:Mit gRPC können Sie die Leselatenz bei langwierigen Lesevorgängen verbessern und Leseintensive Arbeitslasten unterstützen. Sie wird nicht für Anwendungen empfohlen, die einen gRPC-Kanal erstellen, eine kurze Berechnung ausführen und den Kanal dann schließen.
- Nicht authentifizierte Anfragen:gRPC unterstützt keine nicht authentifizierten Anfragen.
Voraussetzungen
Für die Verwendung von gRPC mit dem Cloud Storage-Connector gelten die folgenden Anforderungen:
Das VPC-Netzwerk Ihres Dataproc-Clusters muss direkte Verbindungen unterstützen. Das bedeutet, dass die Routen und Firewallregeln des Netzwerks ausgehenden Traffic zu
34.126.0.0/18
und2001:4860:8040::/42
zulassen müssen.- Wenn Ihr Dataproc-Cluster IPv6-Netzwerke verwendet, müssen Sie ein IPv6-Subnetz für VM-Instanzen einrichten. Weitere Informationen finden Sie unter IPv6 für Instanzen und Instanzvorlagen konfigurieren.
Wenn Sie einen Dataproc-Cluster erstellen, müssen Sie die Cloud Storage-Connector-Version
2.2.23
oder höher mit der Image-Version2.1.56+
oder die Cloud Storage-Connector-Version 3.0.0 oder höher mit der Image-Version 2.2.0 oder höher verwenden. Die Cloud Storage-Connector-Version, die auf jeder Dataproc-Image-Version installiert ist, ist auf den Seiten zu Dataproc-Image-Versionen aufgeführt.- Wenn Sie einen virtuellen Dataproc-Cluster in GKE für Ihre gRPC-Cloud Storage-Anfragen erstellen und verwenden, wird die GKE-Version
1.28.5-gke.1199000
mitgke-metadata-server 0.4.285
empfohlen. Diese Kombination unterstützt eine direkte Verbindung.
- Wenn Sie einen virtuellen Dataproc-Cluster in GKE für Ihre gRPC-Cloud Storage-Anfragen erstellen und verwenden, wird die GKE-Version
Sie oder Ihr Administrator müssen Identity and Access Management-Rollen zuweisen, die die Berechtigungen enthalten, die zum Einrichten und Senden von gRPC-Anfragen an den Cloud Storage-Connector erforderlich sind. Zu diesen Rollen gehören:
- Nutzerrolle: Dataproc-Bearbeiter, Rolle, die Nutzern gewährt wird, damit sie Cluster erstellen und Jobs einreichen können
- Dienstkontorolle: Die Rolle Storage Object User, die dem VM-Dienstkonto von Dataproc gewährt wird, damit Anwendungen, die auf Cluster-VMs ausgeführt werden, Cloud Storage-Objekte ansehen, lesen, erstellen und schreiben können.
gRPC für den Cloud Storage-Connector aktivieren
Sie können gRPC für den Cloud Storage-Connector auf Cluster- oder Jobebene aktivieren. Sobald die Funktion auf dem Cluster aktiviert ist, werden für Leseanfragen des Cloud Storage-Connectors gRPC verwendet. Wenn die Funktion auf Jobebene statt auf Clusterebene aktiviert ist, wird für Leseanfragen des Cloud Storage-Connectors nur gRPC für den Job verwendet.
Cluster aktivieren
Wenn Sie gRPC für den Cloud Storage-Connector auf Clusterebene aktivieren möchten, legen Sie die Eigenschaft core:fs.gs.client.type=STORAGE_CLIENT
fest, wenn Sie einen Dataproc-Cluster erstellen.
Sobald gRPC auf Clusterebene aktiviert ist, werden Leseanfragen des Cloud Storage-Connectors, die von Jobs im Cluster gesendet werden, über gRPC gesendet.
Beispiel für die gcloud CLI:
gcloud dataproc clusters create CLUSTER_NAME \ --project=PROJECT_ID \ --region=REGION \ --properties=core:fs.gs.client.type=STORAGE_CLIENT
Dabei gilt:
- CLUSTER_NAME: Geben Sie einen Namen für den Cluster an.
- PROJECT_NAME: Die Projekt-ID des Projekts, in dem sich der Cluster befindet. Projekt-IDs sind im Bereich Projektinformationen im Dashboard der Google Cloud Console aufgeführt.
- REGION: Geben Sie eine Compute Engine-Region an, in der sich der Cluster befinden soll.
Job aktivieren
Wenn Sie gRPC für einen bestimmten Job im Cloud Storage-Connector aktivieren möchten, geben Sie --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT
an, wenn Sie einen Job einreichen.
Beispiel: Einen Job in einem vorhandenen Cluster ausführen, der gRPC zum Lesen von Daten aus Cloud Storage verwendet
Erstellen Sie ein lokales
/tmp/line-count.py
-PySpark-Script, das mit gRPC eine Cloud Storage-Textdatei liest und die Anzahl der Zeilen in der Datei ausgibt.cat <<EOF >"/tmp/line-count.py" #!/usr/bin/python import sys from pyspark.sql import SparkSession path = sys.argv[1] spark = SparkSession.builder.getOrCreate() rdd = spark.read.text(path) lines_counter = rdd.count() print("There are {} lines in file: {}".format(lines_counter,path)) EOF
Erstellen Sie eine lokale
/tmp/line-count-sample.txt
-Textdatei.cat <<EOF >"/tmp/line-count-sample.txt" Line 1 Line 2 line 3 EOF
Laden Sie lokale
/tmp/line-count.py
- und/tmp/line-count-sample.txt
-Dateien in Ihren Bucket in Cloud Storage hoch.gcloud storage cp /tmp/line-count* gs://BUCKET
Führen Sie den
line-count.py
-Job in Ihrem Cluster aus. Legen Sie--properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT
fest, um gRPC für Leseanfragen des Cloud Storage-Connectors zu aktivieren.gcloud dataproc jobs submit pyspark gs://BUCKET/line-count.py \ --cluster=CLUSTER_NAME \ --project=PROJECT_ID \ --region=REGION \ --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT \ -- gs://BUCKET/line-count-sample.txt
Dabei gilt:
- CLUSTER_NAME: Der Name eines vorhandenen Clusters.
- PROJECT_NAME: Ihre Projekt-ID. Projekt-IDs sind im Bereich Projektinformationen im Dashboard der Google Cloud Console aufgeführt.
- REGION: Die Compute Engine-Region, in der sich der Cluster befindet.
- BUCKET: Ihr Cloud Storage-Bucket.
gRPC-clientseitige Messwerte generieren
Sie können den Cloud Storage-Connector so konfigurieren, dass gRPC-bezogene Messwerte in Cloud Monitoring generiert werden. Mit den gRPC-bezogenen Messwerten können Sie Folgendes tun:
- Leistung von gRPC-Anfragen an Cloud Storage überwachen und optimieren
- Probleme beheben und Fehler beheben
- Informationen zur App-Nutzung und zum Nutzerverhalten erhalten
Informationen zum Konfigurieren des Cloud Storage-Connectors zum Generieren von gRPC-bezogenen Messwerten finden Sie unter gRPC-clientseitige Messwerte verwenden.
Ressourcen
- Unter Mit gRPC eine Verbindung zu Cloud Storage herstellen erfahren Sie, wie Sie den Cloud Storage-Connector mit Clientbibliotheken, VPC Service Controls und anderen Szenarien verwenden.
- Weitere Informationen zu Cloud Storage
- Weitere Informationen finden Sie unter Cloud Storage-Connector mit Apache Spark verwenden.
- Informationen zum Apache Hadoop-Dateisystem
- Javadoc-Referenz