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: Speichern Sie Ihre Daten in Cloud Storage und greifen Sie 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 Speicherverwaltungs-Overhead: Im Gegensatz zu HDFS erfordert Cloud Storage keine routinemäßigen Verwaltungsmaßnahmen wie das Prü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
NameNodeauß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
/usr/local/share/google/dataproc/lib/ Verzeichnis installiert. In den folgenden
Unterabschnitten werden die Schritte beschrieben, die Sie ausführen können, um die Einrichtung des
Connectors in Dataproc-Clustern abzuschließen.
VM-Dienstkonto
Wenn Sie den Connector auf Dataproc-Cluster
knoten und anderen Compute Engine-VMs ausführen, ist die
google.cloud.auth.service.account.enable Property standardmäßig auf false gesetzt. 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 Dataproc VM-Dienstkonto muss die Berechtigung haben, auf Ihren Cloud Storage-Bucket zuzugreifen.
Vom Nutzer ausgewählte Connector-Versionen
Die standardmäßigen Cloud Storage-Connector-Versionen, die in den neuesten Images verwendet werden, die auf Dataproc-Clustern installiert sind, sind auf den Seiten zu den Image-Versionenaufgeführt. Wenn Ihre Anwendung von einer nicht standardmäßigen Connector-Version abhängt, die in 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
--metadata=GCS_CONNECTOR_VERSION=x.y.zFlag. Dadurch wird der von Anwendungen verwendete Connector, die im Cluster ausgeführt werden, auf die angegebene Connector-Version aktualisiert. - Fügen Sie der JAR-Datei Ihrer Anwendung die Connector-Klassen und -Abhängigkeiten für die verwendete Version hinzu und verschieben Sie diese. Die Verschiebung ist erforderlich, um einen Konflikt zwischen der bereitgestellten Connector-Version und der standardmäßigen Connector-Version zu vermeiden, die auf dem Dataproc-Cluster installiert ist. Weitere Informationen finden Sie im Beispiel für die Verschiebung von Maven-Abhängigkeiten.
Connector in Nicht-Dataproc-Clustern einrichten
Sie können den Cloud Storage-Connector in einem Nicht-Dataproc-Cluster einrichten, z. B. in einem Apache Hadoop- oder Spark-Cluster, den Sie verwenden, um lokale HDFS-Daten nach Cloud Storage zu verschieben.
Connector herunterladen
- So laden Sie den Cloud Storage-Connector herunter:
- So verwenden Sie die
latest-Version im Cloud Storage-Bucket (die Verwendung derlatest-Version wird für Produktionsanwendungen nicht empfohlen): - So verwenden Sie eine bestimmte Version
aus Ihrem Cloud Storage-Bucket, indem Sie die Hadoop- und
Cloud Storage-Connector-Versionen im
gcs-connector-HADOOP_VERSION-CONNECTOR_VERSION.jarNamensmuster ersetzen, z. B.gs://hadoop-lib/gcs/gcs-connector-hadoop2-2.1.1.jar. - Wenn Sie eine bestimmte Version
aus dem
Apache Maven-Repository,
eine Shading-JAR-Datei mit dem Suffix
-shadedim Namen herunterladen.
- So verwenden Sie die
- 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 verwenden
Sie können mit dem Connector auf folgende Arten auf Cloud Storage-Daten zugreifen:
- In einer Spark-, PySpark- oder Hadoop-Anwendung mit dem
gs://Präfix - 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 wie:
Java-Verwendung
Der Cloud Storage-Connector erfordert Java 8.
Im Folgenden finden Sie einen Beispielabschnitt zur Maven POM-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 Shading-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-Support
Der Cloud Storage-Connector wird für die Verwendung mit Google Cloud Produkten und Anwendungsfällen unterstützt. Google Cloud Bei der Verwendung mit Dataproc erhalten Sie für den Connector den gleichen Support wie für Dataproc. Weitere Informationen finden Sie unter Support.
Mit Cloud Storage mithilfe von gRPC verbinden
Standardmäßig verwendet der Cloud Storage-Connector in Dataproc die Cloud Storage JSON API. In diesem Abschnitt wird beschrieben, 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 Punkte zu beachten:
- Regionaler Bucket-Standort: gRPC kann die Leselatenz nur verbessern, wenn sich Compute Engine-VMs und Cloud Storage-Buckets in derselben Compute Engine-Region befinden.
- Jobs mit vielen Lesevorgängen:gRPC kann die Leselatenz bei lang andauernden Lesevorgängen verbessern und bei Arbeitslasten mit vielen Lesevorgängen helfen. Es 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
Die folgenden Anforderungen gelten für die Verwendung von gRPC mit dem Cloud Storage-Connector:
Das VPC-Netzwerk Ihres Dataproc-Clusters muss eine direkte Verbindung unterstützen. Das bedeutet, dass die Routen und Firewallregeln des Netzwerks ausgehenden Traffic zu
34.126.0.0/18und2001:4860:8040::/42zulassen 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.
Beim Erstellen eines Dataproc-Clusters müssen Sie die Cloud Storage-Connector-Version
2.2.23oder höher mit der Image-Version2.1.56+oder die Cloud Storage Connector-Version v3.0.0 oder höher mit der Image-Version 2.2.0+ verwenden. Die Cloud Storage-Connector-Version, die in jeder Dataproc-Image-Version installiert ist, ist auf den Seiten zu den 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.1199000mitgke-metadata-server 0.4.285empfohlen. 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 der Administrator Ihrer Organisation müssen IAM-Rollen (Identity and Access Management) zuweisen, die die Berechtigungen enthalten, die zum Einrichten und Senden von gRPC-Anfragen an den Cloud Storage-Connector erforderlich sind. Diese Rollen können Folgendes umfassen:
- Nutzerrolle: Dataproc-Bearbeiter Rolle wird Nutzern zugewiesen, damit sie Cluster erstellen und Jobs senden können.
- Dienstkontorolle: Storage-Objekt-Nutzer Rolle, die dem Dataproc- VM-Dienstkonto zugewiesen ist, 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. Wenn gRPC auf Clusterebene aktiviert ist, verwenden Cloud Storage Connector-Leseanfragen gRPC. Wenn gRPC stattdessen auf Jobebene aktiviert ist, verwenden Cloud Storage-Connector-Leseanfragen gRPC nur für den Job.
Cluster aktivieren
Wenn Sie gRPC für den Cloud Storage-Connector auf Clusterebene aktivieren möchten,
legen Sie beim
Erstellen eines Dataproc-Clusters die core:fs.gs.client.type=STORAGE_CLIENT Property fest.
Sobald gRPC auf Clusterebene aktiviert ist, verwenden Cloud Storage-Connector
Leseanfragen, die von Jobs gesendet werden, die im Cluster ausgeführt werden, gRPC.
gcloud CLI-Beispiel:
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 Ihren Cluster an.
- PROJECT_NAME: Die Projekt-ID des Projekts, in dem sich der Cluster befindet. Projekt-IDs sind im Bereich Projektinformationen im Console- Google Cloud Dashboard aufgeführt.
- REGION: Geben Sie eine Compute Engine-Region an, in der sich der Cluster befinden soll.
Job aktivieren
Wenn Sie gRPC für den Cloud Storage-Connector für einen bestimmten
Job aktivieren möchten, fügen Sie --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT
hinzu, wenn Sie einen Job senden.
Beispiel: Job in einem vorhandenen Cluster ausführen, der gRPC verwendet, um Daten aus Cloud Storage zu lesen.
Erstellen Sie ein lokales
/tmp/line-count.pyPySpark-Skript, das gRPC verwendet, um eine Cloud Storage-Textdatei zu lesen und die Anzahl der Zeilen in der Datei auszugeben.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)) EOFErstellen Sie eine lokale Textdatei
/tmp/line-count-sample.txt.cat <<EOF >"/tmp/line-count-sample.txt" Line 1 Line 2 line 3 EOF
Laden Sie die lokalen Dateien
/tmp/line-count.pyund/tmp/line-count-sample.txtin Ihren Bucket in Cloud Storage hoch.gcloud storage cp /tmp/line-count* gs://BUCKET
Führen Sie den
line-count.pyJob in Ihrem Cluster aus. Legen Sie--properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENTfest, 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 Google Cloud Console- Dashboard 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. Die gRPC-bezogenen Messwerte können Ihnen bei Folgendem helfen:
- Leistung von gRPC-Anfragen an Cloud Storage überwachen und optimieren
- Probleme beheben und Fehler beheben
- Einblick in die Nutzung und das Verhalten von Anwendungen erhalten
Informationen zum Konfigurieren des Cloud Storage-Connectors zum Generieren von gRPC-bezogenen Messwerten finden Sie unter gRPC-clientseitige Messwerte verwenden.
Ressourcen
- Konfigurationseigenschaften des Cloud Storage-Connectors auf GitHub
- Siehe Mit Cloud Storage mithilfe von gRPC verbinden um den Cloud Storage-Connector mit Clientbibliotheken, VPC Service Controls und anderen Szenarien zu verwenden
- Weitere Informationen zu Cloud Storage
- Cloud Storage-Connector mit Apache Spark verwenden
- Apache Hadoop-Dateisystem
- Javadoc-Referenz