Apache Spark-Batch-Arbeitslast ausführen

Einrichtung

  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 Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

  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 Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für ein Projekt aktiviert ist.

  7. Dataproc API aktivieren.

    Aktivieren Sie die API

Spark-Batch-Arbeitslast einreichen

Console

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

Wählen Sie die folgenden Felder auf der Seite aus und füllen Sie sie aus, um eine Spark-Batch-Arbeitslast einzureichen, um den ungefähren Wert von Pi zu berechnen:

  • Batch-Informationen
    • Batch-ID: Geben Sie eine ID für Ihre Batch-Arbeitslast an. Dieser Wert muss 4 bis 63 Kleinbuchstaben enthalten. 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
    • Hauptklasse:
      org.apache.spark.examples.SparkPi
    • JAR-Dateien:
      file:///usr/lib/spark/examples/jars/spark-examples.jar
    • Argumente: 1000
  • Ausführungskonfiguration: Sie können ein Dienstkonto angeben, das zum Ausführen Ihrer Arbeitslast verwendet werden soll. Wenn Sie kein Dienstkonto angeben, wird die Arbeitslast unter dem Compute Engine-Standarddienstkonto ausgeführt.
  • Netzwerkkonfiguration: Das VPC-Subnetzwerk, das serverlose Spark-Arbeitslasten ausführt, muss die Anforderungen erfüllen, die unter Serverlose Dataproc-Konfiguration für Spark aufgeführt sind. Die Subnetzwerkliste zeigt Subnetze in dem ausgewählten Netzwerk an, die für den privaten Google-Zugriff aktiviert sind.
  • Attribute: Geben Sie den Schlüssel (Property-Name) aller unterstützten Spark-Properties ein, die die Spark-Batch-Arbeitslast verwenden soll. Hinweis: Im Gegensatz zu den Cluster-Properties von Dataproc in Compute Engine enthalten die Arbeitslasten von Dataproc Serverless for Spark-Arbeitslasten kein Präfix „"spark:"“.
  • Weitere Optionen

Klicken Sie auf SENDEN, um die Spark-Batcharbeitslast auszuführen.

gcloud

Führen Sie zum Senden des Spark-Batcharbeitslastens zum Berechnen des ungefähren Werts von pi den folgenden gcloud-Befehl gcloud qwiklabs BatchesSubmit spark 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:

  • Subnetzwerk: Das VPC-Subnetzwerk, das serverlose Spark-Arbeitslasten ausführt, muss die Anforderungen erfüllen, die unter Serverlose Dataproc-Konfiguration für Spark aufgeführt sind. Wenn das default-Netzwerk 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:
    1. Aktivieren Sie das Standardnetzwerk für das Netzwerk für die Region für den privaten Google-Zugriff oder
    2. Verwenden Sie im Befehl das Flag --subnet=[SUBNET_URI], 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 von Subnetzen in einem Netzwerk auflisten.
  • --jars:Die JAR-Beispieldatei ist vorinstalliert und das Argument --1000, das an die SparkPi-Arbeitslast übergeben wird, gibt 1.000 Iterationen der Pi-Schätzlogik an. Die Argumente für die Arbeitslasteingabe sind hinter "-- " enthalten.
  • --properties: Sie können das Flag --properties hinzufügen, um alle unterstützten Spark-Attribute einzugeben, die Ihre Spark-Batch-Arbeitslast verwenden sollen.
  • --deps-bucket:Sie können dieses Flag hinzufügen, um einen Cloud Storage-Bucket anzugeben, in den Dataproc Serverless for Spark Arbeitslastarbeitslasten hochlädt. Das URI-Präfix gs:// des Buckets ist nicht erforderlich. Sie können nur den Bucket-Pfad und -Namen angeben, z. B. "mybucketname" Ausnahme: Wenn Ihre Batch-Arbeitslast auf Dateien auf Ihrer lokalen Maschine verweist, ist das Flag --deps-bucket erforderlich. Dataproc Serverless für Spark lädt die lokalen Dateien in einen /dependencies-Ordner im Bucket hoch, bevor die Batch-Arbeitslast ausgeführt wird.
  • --container-image: Sie können ein benutzerdefiniertes Container-Image im Docker-Image-Benennformat {hostname}/{project-id}/{image}:{tag} angeben, z. B. gcr.io/my-project-id/my-image:1.0.1. Der benutzerdefinierte Container muss in Container Registry gehostet werden.
  • Weitere Optionen:
    • Sie können weitere optionale Befehls-Flags hinzufügen. Mit dem folgenden Befehl wird beispielsweise die Batch-Arbeitslast so konfiguriert, dass sie einen externen selbstverwalteten Hive Metastore mit einer Spark-Standardkonfiguration verwendet:
      gcloud beta dataproc batches submit \
          --properties=spark.sql.catalogImplementation=hive,spark.hive.metastore.uris=METASTORE_URI,spark.hive.metastore.warehouse.dir=WAREHOUSE_DIR> \
          other args ...
                 
      Unter gcloud dataproc batches submit finden Sie unterstützte Befehls-Flags.
    • Verwenden Sie einen Persistent History Server.
      1. Einen PHS (Persistent History Server) in einem Dataproc-Cluster mit einem einzelnen Knoten erstellen. Hinweis: Die 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 und geben Sie Ihren ausgeführten 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
                      

REST UND BEFEHLSZEILE

In diesem Abschnitt wird gezeigt, wie Sie eine Batch-Arbeitslast erstellen, um den ungefähren Wert von pi mit der Batches.create API von Dataproc Serverless zu berechnen.

Bevor Sie eine der Anfragedaten verwenden, nehmen Sie folgende Ersetzungen vor:

  • project-id: Google Cloud-Projekt-ID
  • region: region [Region]
  • Hinweise:
    • Custom-container-image: Geben Sie das benutzerdefinierte Container-Image mit dem Docker-Image-Namensformat an: {hostname}/{project-id}/{image}:{tag}, z. B. "gcr.io/my-project-id/my-image:1.0.1" Hinweis: Sie müssen Ihren benutzerdefinierten Container in Container Registry hosten.
    • Subnetzwerk: Wenn das default-Subnetz für das angegebene region für den privaten Google-Zugriff nicht aktiviert ist, müssen Sie einen der folgenden Schritte ausführen:
      1. Aktivieren Sie das Standardnetzwerk für das Netzwerk für den privaten Google-Zugriff region oder
      2. Geben Sie im Feld ExecutionConfig.subnetworkUri ein Subnetz an, für das der private 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. 1 wird an die SparkPi-Arbeitslast übergeben und gibt 1.000 Wiederholungen der Pi-Schätzlogik an.
    • Spark properties:Im Feld RuntimeConfig.properties können Sie alle unterstützten Spark-Properties eingeben, die Ihre Spark-Batch-Arbeitslast verwenden sollen.
    • 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"
    }