Apache Spark-Batcharbeitslast ausführen

Hier erfahren Sie, wie Sie mit Dataproc Serverless eine Batcharbeitslast in einer von Dataproc verwalteten Computing-Infrastruktur einreichen, die die Ressourcen nach Bedarf skaliert.

Hinweise

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  4. Enable the Dataproc API.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  7. Enable the Dataproc API.

    Enable the API

Spark-Batcharbeitslast senden

Console

  1. Rufen Sie in der Google Cloud Console Dataproc-Batches auf. Klicken Sie auf Erstellen, um die Seite Batch erstellen zu öffnen.

  2. Wählen Sie die folgenden Felder auf der Seite aus und füllen Sie sie aus, um eine Spark-Batch-Arbeitslast einzureichen, mit der der ungefähre Wert von Pi berechnet wird:

    • Batch-Informationen:
      • Batch-ID: Geben Sie eine ID für die Batcharbeitslast an. Dieser Wert muss zwischen 4 und 63 liegen Kleinbuchstaben. Gültige Zeichen sind /[a-z][0-9]-/.
      • Region: Wählen Sie eine Region aus, in der Ihre Arbeitslast ausgeführt werden soll.
    • Container:
      • Batchtyp: Spark.
      • Laufzeitversion: Die Standardlaufzeitversion ist ausgewählt. Optional können Sie einen eine nicht standardmäßige Dataproc Serverless-Laufzeitversion.
      • Hauptklasse:
        org.apache.spark.examples.SparkPi
      • JAR-Dateien: Diese Datei ist in der serverlosen Spark-Ausführungsumgebung von Dataproc vorinstalliert.
        file:///usr/lib/spark/examples/jars/spark-examples.jar
      • Argumente: 1.000.
    • Ausführungskonfiguration: Sie können ein Dienstkonto angeben, das für die Ausführung Ihrer Arbeitslast verwendet werden soll. Wenn Sie kein Dienstkonto angeben, unter der Standardmäßiges Compute Engine-Dienstkonto
    • Netzwerkkonfiguration: Das VPC-Subnetzwerk, das Dataproc Serverless für Spark-Arbeitslasten ausführt, aktiviert sein für Privater Google-Zugriff und die anderen Anforderungen erfüllen, die in Dataproc Serverless for Spark-Netzwerkkonfiguration. In der Liste der Subnetze werden Subnetze in Ihrem ausgewählten Netzwerk angezeigt, die für den privaten Google-Zugriff aktiviert sind.
    • Properties (Eigenschaften): Geben Sie den Key (Property-Namen) und den Value der unterstützten Spark-Properties ein, die für Ihre Spark-Batcharbeitslast festgelegt werden sollen. Hinweis: Im Gegensatz zu Dataproc in Compute Engine Clusterattribute Dataproc Serverless for Spark-Arbeitslastattribute enthalten keine spark: .
    • Weitere Optionen:
  3. Klicken Sie auf SENDEN, um die Spark-Batcharbeitslast auszuführen.

gcloud

So senden Sie eine Spark-Batcharbeitslast, um den ungefähren Wert zu berechnen. von pi, führen Sie die folgende gcloud CLI aus gcloud dataproc batches submit spark in einem Terminalfenster oder in Cloud Shell

gcloud dataproc batches submit spark \
    --region=REGION \
    --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
    --class=org.apache.spark.examples.SparkPi \
    -- 1000

Hinweise:

  • REGION: Geben Sie die Region an. wo die Arbeitslast ausgeführt wird.
  • Subnetzwerk: Das VPC-Subnetzwerk, in dem Dataproc Serverless for Spark-Arbeitslasten ausgeführt werden, muss für den privaten Google-Zugriff aktiviert sein und die anderen Anforderungen erfüllen, die unter Dataproc Serverless for Spark-Netzwerkkonfiguration aufgeführt sind. Wenn das Subnetz des Netzwerks default für die im Befehl gcloud dataproc batches submit angegebene Region nicht für den privaten Google-Zugriff aktiviert ist, müssen Sie einen der folgenden Schritte ausführen:
    • Aktivieren Sie das Subnetz des Standardnetzwerks für die Region für den privater Google-Zugriff oder
    • Verwenden Sie das Flag --subnet=[SUBNET_URI] im Befehl, um ein Subnetz anzugeben, für das der private Google-Zugriff aktiviert ist. Mit dem Befehl gcloud compute networks describe [NETWORK_NAME] können Sie die URIs der Subnetze in einem Netzwerk auflisten.
  • --jars: Die JAR-Beispieldatei ist in der Spark-Ausführungsumgebung vorinstalliert. Das Befehlsargument 1000, das an die SparkPi-Arbeitslast übergeben wird, gibt 1.000 an Iterationen der PI-Schätzlogik (Arbeitslasteingabeargumente sind nach "--" eingefügt werden.
  • --properties: Sie können das Flag --properties hinzufügen, um unterstützte Spark-Properties einzugeben, die für Ihre Spark-Batcharbeitslast verwendet werden sollen.
  • --deps-bucket: Mit diesem Flag können Sie einen Cloud Storage-Bucket angeben, in den Dataproc Serverless Workload-Abhängigkeiten hochlädt. Das gs://-URI-Präfix des Buckets ist nicht erforderlich. Sie können den Bucket-Pfad oder den Bucket-Namen angeben, z. B. „mybucketname“. Dataproc Serverless for Spark lädt die lokalen Dateien in einen /dependencies-Ordner im Bucket hoch, bevor die Batcharbeitslast ausgeführt wird. Hinweis: Dieses Flag ist erforderlich, wenn Ihre Batch-Arbeitslast auf Dateien auf Ihrem lokalen Computer verweist.
  • --ttl: Sie können das Flag --ttl hinzufügen, um die Dauer der Batch-Lebensdauer anzugeben. Wenn die Arbeitslast diese Dauer überschreitet, wird sie bedingungslos beendet, ohne dass auf den Abschluss der laufenden Arbeit gewartet wird. Geben Sie die Dauer mit einem s, m, h oder d (Sekunden, Minuten, Stunden oder Tage) einfügen. Der Mindestwert beträgt 10 Minuten (10m). und der Maximalwert 14 Tage (14d) beträgt.
    • 1.1- oder 2.0-Laufzeit-Batches: Wenn für eine 1.1- oder 2.0-Laufzeit-Batch-Arbeitslast --ttl nicht angegeben ist, darf die Arbeitslast ausgeführt werden, bis sie natürlich beendet wird (oder ewig laufen, wenn sie nicht beendet wird).
    • Laufzeit-Batches ab 2.1:wenn --ttl nicht angegeben ist Bei Batcharbeitslasten mit 2.1 oder höher wird standardmäßig 4h verwendet.
  • Weitere Optionen:Sie können gcloud dataproc batches submit Befehls-Flags zum Angeben anderer Arbeitslastoptionen und Spark-Attribute.
    • Hive-Metastore: Mit dem folgenden Befehl wird eine Batch-Arbeitslast für die Verwendung eines externen selbstverwalteten Hive-Metastores mit einer Standard-Spark-Konfiguration konfiguriert.
      gcloud dataproc batches submit \
          --properties=spark.sql.catalogImplementation=hive,spark.hive.metastore.uris=METASTORE_URI,spark.hive.metastore.warehouse.dir=WAREHOUSE_DIR> \
          other args ...
              
    • Persistent History Server:
      1. Mit dem folgenden Befehl wird ein PHS auf einem Dataproc-Cluster mit einem einzelnen Knoten erstellt. Die PHS muss sich in der Region befinden, in der Sie Batch-Arbeitslasten ausführen, und der Cloud Storage-bucket-name muss vorhanden sein.
        gcloud dataproc clusters create PHS_CLUSTER_NAME \
            --region=REGION \
            --single-node \
            --enable-component-gateway \
            --properties=spark:spark.history.fs.logDirectory=gs://bucket-name/phs/*/spark-job-history
                     
      2. Senden Sie eine Batcharbeitslast, indem Sie den ausgeführten Persistent History Server angeben.
        gcloud dataproc batches submit spark \
            --region=REGION \
            --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
            --class=org.apache.spark.examples.SparkPi \
            --history-server-cluster=projects/project-id/regions/region/clusters/PHS-cluster-name \
            -- 1000
                      
    • Laufzeitversion: Verwenden Sie das Flag --version, um Dataproc Serverless anzugeben Laufzeitversion für die Arbeitslast.
      gcloud dataproc batches submit spark \
          --region=REGION \
          --jars=file:///usr/lib/spark/examples/jars/spark-examples.jar \
          --class=org.apache.spark.examples.SparkPi \
          --version=VERSION
          -- 1000
                  

API

In diesem Abschnitt wird gezeigt, wie Sie mithilfe der Dataproc Serverless for Spark-API batches.create eine Batcharbeitslast erstellen, um den ungefähren Wert von pi zu berechnen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • project-id: Eine Google Cloud-Projekt-ID.
  • region: Eine Compute Engine-Region in dem Dataproc Serverless die Arbeitslast ausführt.
  • Hinweise:
    • Custom-container-image: Geben Sie das benutzerdefinierte Container-Image im Namensformat für Docker-Images an: {hostname}/{project-id}/{image}:{tag}, z. B. „gcr.io/my-project-id/my-image:1.0.1“. Hinweis: Der benutzerdefinierte Container muss in Container Registry gehostet werden.
    • Subnetzwerk: Das VPC-Subnetzwerk, in dem Dataproc Serverless for Spark-Arbeitslasten ausgeführt werden, muss für den privaten Google-Zugriff aktiviert sein und die anderen Anforderungen erfüllen, die unter Dataproc Serverless for Spark-Netzwerkkonfiguration aufgeführt sind. Wenn das Subnetz des Netzwerks default für die angegebene Region nicht für den privaten Google-Zugriff aktiviert ist, müssen Sie einen der folgenden Schritte ausführen:
      1. Aktivieren Sie das Subnetz des Standardnetzwerks für die Region für den privaten Google-Zugriff oder
      2. Verwenden Sie das Feld ExecutionConfig.subnetworkUri, um ein Subnetz anzugeben, für das der private Google-Zugriff aktiviert ist. Sie können den gcloud compute networks describe [NETWORK_NAME] ausführen , um die URIs von Subnetzen in einem Netzwerk aufzulisten.
    • sparkBatch.jarFileUris: Die Beispiel-JAR-Datei ist in der Spark-Ausführungsumgebung vorinstalliert. Die „1000“ sparkBatch.args wird an die SparkPi-Arbeitslast übergeben und gibt 1.000 Iterationen der PI-Schätzung vor. Logik.
    • Spark properties: Im Feld RuntimeConfig.properties können Sie unterstützte Spark-Properties eingeben, die für Ihre Spark-Batch-Arbeitslast verwendet werden sollen.
    • --ttl: Mit dem Feld EnvironmentConfig.ttl können Sie die Dauer der Batch-Lebensdauer angeben. Wenn die Arbeitslast überschreitet innerhalb dieser Dauer, wird sie bedingungslos beendet, ohne um diesen Vorgang abzuschließen. Gib die Dauer als JSON-Darstellung für Duration an. Der Mindestwert beträgt 10 Minuten und der Höchstwert 14 Tage.
      • Laufzeit-Batches 1.1 oder 2.0:wenn --ttl nicht angegeben ist Bei einer Batcharbeitslast mit einer Laufzeit von 1.1 oder 2.0 darf die Arbeitslast ausgeführt werden, bis sie beendet wird. natürlich (oder für immer laufen, falls er nicht beendet wird).
      • Laufzeit-Batches ab Version 2.1: Wenn --ttl für eine Batch-Arbeitslast der Laufzeitversion 2.1 oder höher nicht angegeben ist, wird standardmäßig „4 Stunden“ verwendet.
    • Weitere Optionen:

    HTTP-Methode und URL:

    POST https://dataproc.googleapis.com/v1/projects/project-id/locations/region/batches

    JSON-Text anfordern:

    {
      "sparkBatch":{
        "args":[
          "1000"
        ],
        "jarFileUris":[
          "file:///usr/lib/spark/examples/jars/spark-examples.jar"
        ],
        "mainClass":"org.apache.spark.examples.SparkPi"
      }
    }
    

    Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

    Sie sollten in etwa folgende JSON-Antwort erhalten:

    {
    "name":"projects/project-id/locations/region/batches/batch-id",
      "uuid":",uuid",
      "createTime":"2021-07-22T17:03:46.393957Z",
      "sparkBatch":{
        "mainClass":"org.apache.spark.examples.SparkPi",
        "args":[
          "1000"
        ],
        "jarFileUris":[
          "file:///usr/lib/spark/examples/jars/spark-examples.jar"
        ]
      },
      "runtimeInfo":{
        "outputUri":"gs://dataproc-.../driveroutput"
      },
      "state":"SUCCEEDED",
      "stateTime":"2021-07-22T17:06:30.301789Z",
      "creator":"account-email-address",
      "runtimeConfig":{
        "properties":{
          "spark:spark.executor.instances":"2",
          "spark:spark.driver.cores":"2",
          "spark:spark.executor.cores":"2",
          "spark:spark.app.name":"projects/project-id/locations/region/batches/batch-id"
        }
      },
      "environmentConfig":{
        "peripheralsConfig":{
          "sparkHistoryServerConfig":{
          }
        }
      },
      "operation":"projects/project-id/regions/region/operation-id"
    }
    

Arbeitslastkosten schätzen

Dataproc Serverless für Spark-Arbeitslasten verbraucht Data Compute Units (DCU) und Shuffle-Speicherressourcen. Für eine Beispiel für die Ausgabe von Dataproc UsageMetrics um den Verbrauch und die Kosten der Arbeitslastressourcen zu schätzen, Siehe Dataproc Serverless-Preise .

Nächste Schritte

Hier erfahren Sie mehr über: