Apache Spark-Batcharbeitslast senden

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

Hinweise

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

Projekt einrichten

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

  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.

    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

  8. Bei Bedarf IAM-Rollen zuweisen

    Für die Ausführung der Beispiele auf dieser Seite sind bestimmte IAM-Rollen erforderlich. 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, damit Sie die nötigen Berechtigungen zum Einreichen einer serverlosen Batch-Arbeitslast haben:

    Dienstkontorolle

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

    Spark-Batcharbeitslast senden

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

    Console

    1. Rufen Sie in der Google Cloud -Konsole 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 werden soll.
      • Container:
        • Batchtyp: Spark
        • Laufzeitversion: Bestätigen oder wählen Sie die Laufzeitversion 2.3 aus.
        • Hauptklasse:
          org.apache.spark.examples.SparkPi
        • JAR-Dateien (diese Datei ist in der Serverless for Apache Spark-Ausführungsumgebung für Spark 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 Standard- oder benutzerdefinierte Dienstkonto muss die Rolle „Dataproc-Worker“ haben.
      • Netzwerkkonfiguration:Wählen Sie ein Subnetzwerk in der Sitzungsregion aus. „Serverlos“ für Apache Spark aktiviert den privaten Google-Zugriff 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 Value der unterstützten Spark-Attribute ein, die für Ihre Spark-Batcharbeitslast festgelegt werden sollen. Hinweis: Im Gegensatz zu Clusterattributen für Dataproc in Compute Engine enthalten Arbeitslastattribute für Serverless for Apache Spark kein spark:-Präfix.
      • Weitere Optionen:
    4. Klicken Sie auf Senden, um die Spark-Batcharbeitslast auszuführen.

    gcloud

    Wenn Sie einen Spark-Batcharbeitslast senden möchten, um den ungefähren Wert von pi zu berechnen, führen Sie den folgenden gcloud CLI-Befehl gcloud dataproc batches submit spark 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 Beispiel-JAR-Datei ist in der Spark-Ausführungsumgebung vorinstalliert. Das Befehlsargument 1000, das an den SparkPi-Arbeitslast übergeben wird, gibt 1.000 Wiederholungen der Logik zur Schätzung von Pi an. Die 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 Subnetzwerk angeben, wählt Serverless for Apache Spark das Subnetzwerk default in der Sitzungsregion aus. Mit „Serverlos für Apache Spark“ wird privater Google-Zugriff (Private Google Access, PGA) für das Subnetz aktiviert. Informationen zu den Anforderungen an die Netzwerkverbindung finden Sie unter Google Cloud Serverless for Apache Spark-Netzwerkkonfiguration.
      • --properties: Mit diesem Flag können Sie unterstützte Spark-Attribute für Ihre Spark-Batcharbeitslast hinzufügen.
      • --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 in einen /dependencies-Ordner im Bucket hoch, bevor die Batcharbeitslast ausgeführt wird. Hinweis:Dieses Flag ist erforderlich, wenn in Ihrer Batcharbeitslast auf Dateien auf Ihrem lokalen Computer verwiesen wird.
      • --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 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).
        • Laufzeit-Batches für Version 1.1 oder 2.0:Wenn --ttl für eine Arbeitslast mit Laufzeit-Batch für Version 1.1 oder 2.0 nicht angegeben ist, darf die Arbeitslast ausgeführt werden, bis sie auf natürliche Weise beendet wird (oder unbegrenzt, wenn sie nicht beendet wird).
        • Laufzeit-Batchjobs ab Version 2.1:Wenn --ttl für einen Batchjob mit Laufzeitversion 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 unter dem Compute Engine-Standarddienstkonto ausgeführt. Ihr Dienstkonto muss die Dataproc-Worker-Rolle haben.
      • Hive-Metastore: Mit dem folgenden Befehl wird ein Batch-Arbeitslast für die Verwendung eines externen selbstverwalteten Hive-Metastore mit einer Standard-Spark-Konfiguration konfiguriert.
        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 auf 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 den 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: Verwenden Sie das Flag --version, um die Serverless for Apache Spark-Laufzeitversion 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 mithilfe der Serverless for Apache Spark-API 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 Dashboard der Google Cloud Console aufgeführt.
      • REGION: Die Region der Sitzung.

    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

    Für Serverless for Apache Spark-Arbeitslasten werden Data Compute Unit- (DCU) und Shuffle-Speicherressourcen verbraucht. Ein Beispiel, in dem UsageMetrics für Dataproc ausgegeben werden, um den Ressourcenverbrauch und die Kosten von Arbeitslasten zu schätzen, finden Sie unter Serverless for Apache Spark – Preise.

    Nächste Schritte

    Hier erfahren Sie mehr über: