Apache Spark-Batcharbeitslast ausführen

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

Hinweise

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

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

  4. Dataproc API aktivieren.

    Aktivieren Sie die API

  5. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

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

  7. Dataproc API aktivieren.

    Aktivieren Sie die 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-Batcharbeitslast zu senden, die den ungefähren Wert von Pi berechnet:

    • Batch-Informationen:
      • Batch-ID: Geben Sie eine ID für die Batcharbeitslast an. Dieser Wert muss 4 bis 63 kleingeschriebene Zeichen lang sein. Gültige Zeichen sind /[a-z][0-9]-/.
      • Region: Wählen Sie eine Region aus, in der Ihre Arbeitslast ausgeführt wird.
    • Container:
      • Batchtyp: Spark.
      • Laufzeitversion: Die Standardlaufzeitversion wird ausgewählt. Sie können optional eine nicht standardmäßige Dataproc Serverless-Laufzeitversion angeben.
      • Hauptklasse:
        org.apache.spark.examples.SparkPi
      • JAR-Dateien (diese Datei ist in der Dataproc Serverless Spark-Ausführungsumgebung vorinstalliert).
        file:///usr/lib/spark/examples/jars/spark-examples.jar
      • Argumente: 1.000.
    • Ausführungskonfiguration:Sie können ein Dienstkonto angeben, mit dem Ihre Arbeitslast ausgeführt werden soll. Wenn Sie kein Dienstkonto angeben, wird die Arbeitslast unter dem Compute Engine-Standarddienstkonto ausgeführt.
    • Netzwerkkonfiguration:Das VPC-Subnetzwerk, das Dataproc Serverless for Spark-Arbeitslasten ausführt, muss für den privaten Google-Zugriff aktiviert sein und die anderen unter Dataproc Serverless for Spark-Netzwerkkonfiguration aufgeführten Anforderungen erfüllen. In der Liste der Subnetzwerke werden Subnetze im ausgewählten Netzwerk angezeigt, die für den privater Google-Zugriff aktiviert sind.
    • Attribute: Geben Sie Key (Attributname) und Value der unterstützten Spark-Attribute ein, die für die Spark-Batcharbeitslast festgelegt werden sollen. Hinweis: Im Gegensatz zu den Clusterattributen von Dataproc in Compute Engine enthalten die Arbeitslastattribute von Dataproc Serverless for Spark kein Präfix spark:.
    • Weitere Optionen:
  3. Klicken Sie auf SENDEN, um die Spark-Batcharbeitslast auszuführen.

gcloud

Wenn Sie eine Spark-Batcharbeitslast senden möchten, um den ungefähren Wert von pi zu berechnen, führen Sie den folgenden gcloud dataproc batches submit spark-Befehl der gcloud CLI lokal in einem Terminalfenster oder in Cloud Shell aus.

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, in der Ihre Arbeitslast ausgeführt wird.
  • Subnetzwerk: Das VPC-Subnetzwerk, das Dataproc Serverless for Spark-Arbeitslasten ausführt, muss für den privaten Google-Zugriff aktiviert sein und die anderen unter Dataproc Serverless for Spark-Netzwerkkonfiguration aufgeführten Anforderungen erfüllen. 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, führen Sie einen der folgenden Schritte aus:
    • Aktivieren Sie das Subnetz des Standardnetzwerks für die Region für den privater Google-Zugriff oder
    • Verwenden Sie im Befehl das Flag --subnet=[SUBNET_URI], um ein Subnetz anzugeben, für das der privater Google-Zugriff aktiviert ist. Mit dem Befehl gcloud compute networks describe [NETWORK_NAME] können Sie die URIs von Subnetzen in einem Netzwerk auflisten.
  • --jars:Die JAR-Beispieldatei ist in der Spark-Ausführungsumgebung vorinstalliert. Das an die SparkPi-Arbeitslast übergebene Befehlsargument 1000 gibt 1.000 Iterationen der PI-Schätzlogik an (die Eingabeargumente für die Arbeitslast werden nach dem „--“) eingefügt.
  • --properties: Sie können das Flag --properties hinzufügen, um unterstützte Spark-Attribute einzugeben, die die Spark-Batcharbeitslast verwenden soll.
  • --deps-bucket: Sie können dieses Flag hinzufügen, um einen Cloud Storage-Bucket anzugeben, in den Dataproc Serverless Arbeitslastabhängigkeiten hochlädt. Das URI-Präfix gs:// 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 lokale(n) Datei(en) vor dem Ausführen der Batcharbeitslast in einen /dependencies-Ordner im Bucket hoch. Hinweis:Dieses Flag ist erforderlich, wenn Ihre Batcharbeitslast auf Dateien auf Ihrem lokalen Computer verweist.
  • --ttl: Sie können das Flag --ttl hinzufügen, um die Dauer der Batchlebensdauer anzugeben. Überschreitet die Arbeitslast diese Dauer, wird sie bedingungslos beendet, ohne auf den Abschluss der laufenden Arbeit zu warten. Geben Sie die Dauer mit dem Suffix s, m, h oder d (Sekunden, Minuten, Stunden oder Tage) an. Der Mindestwert beträgt 10 Minuten (10m) und der Höchstwert 14 Tage (14d).
    • Laufzeit-Batches von 1.1 oder 2.0:Wenn --ttl für eine Batcharbeitslast der Laufzeit 1.1 oder 2.0 nicht angegeben ist, kann die Arbeitslast so lange ausgeführt werden, bis sie von selbst beendet wird (oder für unbegrenzte Zeit ausgeführt werden, wenn sie nicht beendet wird).
    • Laufzeit-Batches oder höher: Wenn --ttl für eine Laufzeit-Batcharbeitslast ab Version 2.1 oder höher nicht angegeben ist, wird standardmäßig 4h verwendet.
  • Weitere Optionen: Sie können gcloud dataproc batches submit-Befehls-Flags hinzufügen, um andere Arbeitslastoptionen und Spark-Attribute anzugeben.
    • Hive Metastore: Mit dem folgenden Befehl wird eine Batcharbeitslast für die Verwendung eines externen selbstverwalteten Hive-Metastores mithilfe einer Spark-Standardkonfiguration 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 in einem Dataproc-Cluster mit einem Knoten erstellt. Die PHS muss sich in der Region befinden, in der Sie Batcharbeitslasten ausführen, sowie die Cloud Storage-bucket-name.
        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 und geben Sie den laufenden Persistent History Server an.
        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 die Laufzeitversion von Dataproc Serverless für die Arbeitslast anzugeben.
      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 eine Batcharbeitslast erstellen, um den ungefähren Wert von pi mit dem Dataproc Serverless for Spark batches.create zu berechnen.

Bevor Sie die Anfragedaten verwenden, ersetzen Sie die folgenden Werte:

  • project-id: Eine Google Cloud-Projekt-ID.
  • region: Eine Compute Engine-Region, in der Dataproc Serverless die Arbeitslast ausführt.
  • Hinweise:
    • Custom-container-image: Geben Sie das benutzerdefinierte Container-Image im Namensformat für das Docker-Image {hostname}/{project-id}/{image}:{tag} an, 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, das Dataproc Serverless for Spark-Arbeitslasten ausführt, muss für den privaten Google-Zugriff aktiviert sein und die anderen unter Dataproc Serverless for Spark-Netzwerkkonfiguration aufgeführten Anforderungen erfüllen. Wenn das Subnetz des default-Netzwerks 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 privater Google-Zugriff oder
      2. Verwenden Sie das Feld ExecutionConfig.subnetworkUri, um ein Subnetz anzugeben, für das der privater Google-Zugriff aktiviert ist. Mit dem Befehl gcloud compute networks describe [NETWORK_NAME] können Sie die URIs von Subnetzen in einem Netzwerk auflisten.
    • sparkBatch.jarFileUris:Die JAR-Beispieldatei ist in der Spark-Ausführungsumgebung vorinstalliert. Die „1.000“ sparkBatch.args wird an die SparkPi-Arbeitslast übergeben und gibt 1.000 Iterationen der PI-Schätzlogik an.
    • Spark properties: Im Feld RuntimeConfig.properties können Sie unterstützte Spark-Attribute eingeben, die von der Spark-Batcharbeitslast verwendet werden sollen.
    • --ttl: Im Feld EnvironmentConfig.ttl können Sie die Dauer der Batchlebensdauer angeben. Überschreitet die Arbeitslast diese Dauer, wird sie bedingungslos beendet, ohne auf den Abschluss der laufenden Arbeit zu warten. Geben Sie die Dauer als JSON-Darstellung für Dauer an. Der Mindestwert beträgt 10 Minuten und der Höchstwert 14 Tage.
      • Laufzeit-Batches von 1.1 oder 2.0:Wenn --ttl für eine Batcharbeitslast der Laufzeit 1.1 oder 2.0 nicht angegeben ist, kann die Arbeitslast so lange ausgeführt werden, bis sie von selbst beendet wird (oder für unbegrenzte Zeit ausgeführt werden, wenn sie nicht beendet wird).
      • Laufzeit-Batches oder höher: Wenn --ttl für eine Laufzeit-Batcharbeitslast ab Version 2.1 oder höher nicht angegeben ist, werden 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 der Anfrage:

    {
      "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 for Spark-Arbeitslasten verbrauchen Data Compute Unit (DCU) und Shuffle-Speicherressourcen. Ein Beispiel, das Dataproc UsageMetrics ausgibt, um den Verbrauch und die Kosten von Arbeitslastressourcen zu schätzen, finden Sie unter Dataproc Serverless-Preise .

Nächste Schritte

Hier erfahren Sie mehr über: