Cloud Storage-Connector

Mit dem Cloud Storage-Connector, einer Open-Source-Java-Bibliothek, 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:Mit dem Präfix gs:// anstelle von hdfs:// können Sie ganz einfach 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 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-Einrichtung auf Dataproc-Clustern

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 Einrichtung von Connectors in Dataproc-Clustern abzuschließen.

VM-Dienstkonto

Wenn Sie den Connector auf Dataproc-Clusterknoten und anderen Compute Engine-VMs ausführen, wird die Eigenschaft google.cloud.auth.service.account.enable standardmäßig auf false gesetzt. Das bedeutet, dass Sie die Anmeldedaten des VM-Dienstkontos für den Connector nicht konfigurieren müssen. Die Anmeldedaten des VM-Dienstkontos 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 standardmäßigen Cloud Storage-Connector-Versionen, die in den neuesten Images verwendet werden, die auf Dataproc-Clustern installiert sind, sind auf den Seiten zu Image-Versionen aufgeführt. Wenn Ihre Anwendung von einer nicht standardmäßigen 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 von Ihnen verwendete Version in das JAR Ihrer Anwendung ein und verlagern Sie sie.Die Verlagerung ist erforderlich, um einen Konflikt zwischen der bereitgestellten Connector-Version und der auf dem Dataproc-Cluster installierten Standard-Connector-Version zu vermeiden. Weitere Informationen finden Sie auch im Beispiel für die Verlagerung von Maven-Abhängigkeiten.

Connector-Einrichtung auf Nicht-Dataproc-Clustern

Sie können den Cloud Storage-Connector in einem Nicht-Dataproc-Cluster einrichten, z. B. in einem Apache Hadoop- oder Spark-Cluster, den Sie zum Verschieben lokaler HDFS-Daten nach Cloud Storage verwenden.

  1. Connector herunterladen

  2. Connector installieren

    Folgen Sie der GitHub-Anleitung, um den Cloud Storage-Connector zu installieren, zu konfigurieren und zu testen.

Connector-Nutzung

Sie können mit dem Connector auf folgende Arten auf Cloud Storage-Daten zugreifen:

Java-Nutzung

Der Cloud Storage-Connector erfordert Java 8.

Im Folgenden finden Sie ein Beispiel für einen Maven-POM-Abschnitt zur Verwaltung von Abhängigkeiten 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 mitGoogle 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

Mit Cloud Storage über 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 folgende Aspekte zu berücksichtigen:

  • Regionaler Bucket-Standort:Die 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 Arbeitslasten mit vielen Lesevorgängen unterstützen. 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

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 und 2001:4860:8040::/42 zulassen müssen.

  • Wenn Sie einen Dataproc-Cluster erstellen, müssen Sie die Cloud Storage-Connector-Version 2.2.23 oder höher mit der Image-Version 2.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 Dataproc-Image-Versionen aufgeführt.

    • Wenn Sie einen virtuellen Dataproc on GKE-Cluster für Ihre gRPC Cloud Storage-Anfragen erstellen und verwenden, wird die GKE-Version 1.28.5-gke.1199000 mit gke-metadata-server 0.4.285 empfohlen. Diese Kombination unterstützt die direkte Verbindung.
  • Sie oder der Administrator Ihrer Organisation 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. Diese Rollen können Folgendes umfassen:

    • Nutzerrolle: Die Rolle Dataproc-Bearbeiter wird Nutzern zugewiesen, damit sie Cluster erstellen und Jobs senden können.
    • Dienstkontorolle: Die Rolle Storage Object User, die dem VM-Dienstkonto von Dataproc 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. Nach der Aktivierung im Cluster verwenden Leseanfragen des Cloud Storage-Connectors gRPC. Wenn der Cloud Storage-Connector für einen Job anstelle der Clusterebene aktiviert ist, werden für Leseanfragen des Cloud Storage-Connectors nur für den Job gRPC 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, verwenden Leseanfragen des Cloud Storage-Connectors, die von Jobs im Cluster gestellt werden, gRPC.

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 Ihren Cluster an.
  • PROJECT_NAME: Die Projekt-ID des Projekts, in dem sich der Cluster befindet. Projekt-IDs werden im Abschnitt 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 den Cloud Storage-Connector für einen bestimmten Job aktivieren möchten, fügen Sie --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT ein, wenn Sie einen Job senden.

Beispiel: Einen Job in einem vorhandenen Cluster ausführen, der gRPC verwendet, um Daten aus Cloud Storage zu lesen.

  1. Erstellen Sie ein lokales /tmp/line-count.py-PySpark-Skript, 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
    
  2. Erstellen Sie eine lokale Textdatei mit dem Namen /tmp/line-count-sample.txt.

    cat <<EOF >"/tmp/line-count-sample.txt"
    Line 1
    Line 2
    line 3
    EOF
    
  3. Laden Sie die lokalen Dateien /tmp/line-count.py und /tmp/line-count-sample.txt in Ihren Bucket in Cloud Storage hoch.

    gcloud storage cp /tmp/line-count* gs://BUCKET
    
  4. 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 werden 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.

Clientseitige gRPC-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
  • Fehler beheben und debuggen
  • Einblicke in die Anwendungsnutzung und das Verhalten erhalten

Informationen zum Konfigurieren des Cloud Storage-Connectors zum Generieren von gRPC-bezogenen Messwerten finden Sie unter gRPC-Clientseitige Messwerte verwenden.

Ressourcen