Apache Spark-Batcharbeitslast senden

Hier erfahren Sie, wie Sie eine Batcharbeitslast in der verwalteten Computing-Infrastruktur von Google Cloud Serverless for Apache Spark senden, die Ressourcen nach Bedarf skaliert.

Hinweis

Richten Sie Ihr Projekt ein und weisen Sie bei Bedarf IAM-Rollen (Identity and Access Management) zu.

Projekt einrichten

Führen Sie bei Bedarf einen oder mehrere der folgenden Schritte aus:

  1. Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Konto haben Google Cloud, erstellen Sie ein Konto, um die Leistung 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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Dataproc API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Dataproc API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

Bei Bedarf IAM-Rollen zuweisen

Bestimmte IAM-Rollen sind erforderlich, um die Beispiele auf dieser Seite auszuführen. Abhängig von den Organisationsrichtlinien wurden diese Rollen möglicherweise bereits gewährt. Informationen zum Prüfen von Rollenzuweisungen finden Sie unter Müssen Sie Rollen zuweisen?.

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Nutzerrollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Senden einer serverlosen Batcharbeitslast benötigen:

Dienstkontorolle

Damit das Compute Engine-Standarddienstkonto die erforderlichen Berechtigungen zum Senden einer serverlosen Batcharbeitslast hat, bitten Sie Ihren Administrator, dem Dataproc-Worker (roles/dataproc.worker) IAM-Rolle für das Compute Engine-Standarddienstkonto für das Projekt zuzuweisen.

Spark-Batcharbeitslast senden

Sie können die Google Cloud Console, die Google Cloud CLI oder die Dataproc API verwenden, um eine Serverless for Apache Spark-Batcharbeitslast zu erstellen und zu senden.

Console

  1. Rufen Sie in der Google Cloud Console die Seite „Dataproc-Batches“ auf.

  2. Klicken Sie auf Erstellen.

  3. Senden Sie eine Spark-Batcharbeitslast, die den ungefähren Wert von Pi berechnet, indem Sie die folgenden Felder auswählen und ausfüllen:

    • Batchinformationen:
      • Batch-ID: Geben Sie eine ID für Ihre Batcharbeitslast an. Dieser Wert muss zwischen 4 und 63 Kleinbuchstaben 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: Bestätigen oder wählen Sie die 2.3 Laufzeitversion aus.
      • Hauptklasse:
        org.apache.spark.examples.SparkPi
      • JAR-Dateien (diese Datei ist in der Serverless for Apache Spark-Spark-Ausführungsumgebung vorinstalliert).
        file:///usr/lib/spark/examples/jars/spark-examples.jar
      • Argumente: 1000.
    • Ausführungskonfiguration:Wählen Sie Dienstkonto aus. Standardmäßig wird der Batch mit dem Compute Engine-Standarddienstkonto ausgeführt. Sie können ein benutzerdefiniertes Dienstkonto angeben. Das Standarddienstkonto oder das benutzerdefinierte Dienstkonto muss die Rolle „Dataproc-Worker“ haben.
    • Netzwerkkonfiguration:Wählen Sie ein Subnetzwerk in der Sitzungsregion aus. Serverless for Apache Spark aktiviert den privaten Google-Zugriff (Private Google Access, PGA) für das angegebene Subnetz. Informationen zu den Anforderungen an die Netzwerkverbindung finden Sie unter Google Cloud Serverless for Apache Spark-Netzwerkkonfiguration.
    • Attribute: Geben Sie den Key (Attributname) und den Value der unterstützten Spark-Attribute ein, die für Ihre Spark-Batcharbeitslast festgelegt werden sollen. Hinweis: Im Gegensatz zu den Clustereigenschaften von Dataproc on Compute Engine , enthalten die Arbeitslasteigenschaften von Serverless for Apache Spark kein spark: Präfix.
    • Weitere Optionen:
  4. Klicken Sie auf Senden , um die Spark-Batcharbeitslast auszuführen.

gcloud

Zum Senden einer Spark-Batcharbeitslast, die den ungefähren Wert von pi berechnet, führen Sie den folgenden gcloud CLI gcloud dataproc batches submit spark Befehl lokal in einem Terminalfenster oder in Cloud Shell aus.

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

Ersetzen Sie Folgendes:

  • REGION: Geben Sie die Region an, in der Ihre Arbeitslast ausgeführt wird.
  • Weitere Optionen: Sie können gcloud dataproc batches submit spark Flags hinzufügen, um andere Arbeitslastoptionen und Spark-Attribute anzugeben.
    • --jars: Die JAR-Beispieldatei ist in der Spark-Ausführungsumgebung vorinstalliert. Das Befehlsargument 1000, das an die SparkPi-Arbeitslast übergeben wird, gibt 1000 Iterationen der Pi-Schätzlogik an (Eingabeargumente für die Arbeitslast werden nach „-- “ angegeben).
    • --subnet: Mit diesem Flag können Sie den Namen eines Subnetzes in der Sitzungsregion angeben. Wenn Sie kein Subnetz angeben, wählt Serverless for Apache Spark das default Subnetz in der Sitzungsregion aus. Serverless for Apache Spark aktiviert den privaten Google-Zugriff (Private Google Access, PGA) für das Subnetz. Informationen zu den Anforderungen an die Netzwerkverbindung finden Sie unter Google Cloud Serverless for Apache Spark-Netzwerkkonfiguration.
    • --tags: Mit diesem Flag können Sie Netzwerk-Tags für die Traffic-Steuerung angeben. Verwenden Sie Netzwerk Tags, um die Verbindung einzuschränken. In der Produktion empfiehlt es sich, Firewallregeln auf die IP-Adressen zu beschränken, die von Ihren Spark-Arbeitslasten verwendet werden.
    • --properties: Mit diesem Flag können Sie unterstützte Spark-Attribute eingeben, die von Ihrer Spark-Batcharbeitslast verwendet werden sollen.
    • --deps-bucket: Mit diesem Flag können Sie einen Cloud Storage-Bucket angeben, in den Serverless for Apache Spark Arbeitslastabhängigkeiten hochlädt. Das gs:// URI-Präfix des Buckets ist nicht erforderlich. Sie können den Bucket-Pfad oder den Bucket-Namen angeben. Serverless for Apache Spark lädt die lokalen Dateien vor dem Ausführen der Batcharbeitslast in einen Ordner /dependencies im Bucket hoch. Hinweis: Dieses Flag ist erforderlich, wenn Ihre Batcharbeitslast auf Dateien auf Ihrem lokalen Computer verweist.
    • --ttl: Mit dem --ttl Flag können Sie die Dauer der Batchlebensdauer angeben. Wenn die Arbeitslast diese Dauer überschreitet , wird sie bedingungslos beendet, ohne dass laufende Arbeiten abgeschlossen werden. 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).
      • Batches mit Laufzeit 1.1 oder 2.0: Wenn --ttl nicht angegeben ist für eine Batcharbeitslast mit Laufzeit 1.1 oder 2.0, kann die Arbeitslast so lange ausgeführt werden, bis sie auf natürliche Weise beendet wird (oder unbegrenzt, wenn sie nicht beendet wird).
      • Batches mit Laufzeit 2.1 oder höher: Wenn --ttl für eine Batcharbeitslast mit Laufzeit 2.1 oder höher nicht angegeben ist, wird standardmäßig 4h verwendet.
    • --service-account: Sie können ein Dienstkonto angeben, das zum Ausführen Ihrer Arbeitslast verwendet werden soll. Wenn Sie kein Dienstkonto angeben, wird die Arbeitslast mit dem Compute Engine-Standarddienstkonto ausgeführt. Ihr Dienstkonto muss die Rolle „Dataproc-Worker“ haben.
    • Hive-Metastore: Mit dem folgenden Befehl wird eine Batcharbeitslast so konfiguriert, dass ein externer selbstverwalteter Hive-Metastore mit einer Standard-Spark-Konfiguration verwendet wird.
      gcloud dataproc batches submit spark\
          --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 einzelnen Knoten erstellt. Der PHS muss sich in der Region befinden, in der Sie Batcharbeitslasten 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 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
                      
    • Laufzeitversion: Mit dem --version Flag können Sie die Serverless for Apache Spark-Laufzeitversion für die Arbeitslast angeben.
      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 der Serverless for Apache Spark-Methode batches.create` zu berechnen.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • project-id: Eine Google Cloud Projekt-ID.
  • region: Eine Compute Engine-Region , in der Google Cloud Serverless for Apache Spark die Arbeitslast ausführt.
  • Hinweise :

    • PROJECT_ID: Ihre Google Cloud Projekt-ID Projekt-IDs werden im Bereich Projektinformationen im Console- Google Cloud Dashboard aufgeführt.
    • REGION: Die Sitzungsregion.

HTTP-Methode und URL:

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

JSON-Text anfordern:

{
  "sparkBatch":{
    "args":[
      "1000"
    ],
    "runtimeConfig": {
      "version": "2.3",
    },
    "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 eine JSON-Antwort ähnlich wie diese 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":{
    "version":"2.3",
    "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

Serverless for Apache Spark-Arbeitslasten verbrauchen Datenrecheneinheiten (Data Compute Units, DCUs) und Shuffle-Speicherressourcen. Ein Beispiel für die Ausgabe von Dataproc UsageMetrics zur Schätzung des Ressourcenverbrauchs und der Kosten von Arbeitslasten finden Sie unter Serverless for Apache Spark-Preise.

Nächste Schritte

Hier erfahren Sie mehr über: