Esegui un carico di lavoro batch Apache Spark

Scopri come utilizzare Serverless per Apache Spark per inviare un workload batch su un'infrastruttura di calcolo gestita da Dataproc che scala le risorse in base alle esigenze.

Prima di iniziare

  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. Verify that billing is enabled for your Google Cloud project.

  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. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Dataproc API.

    Enable the API

  8. Invia un carico di lavoro batch Spark

    Puoi utilizzare la console Google Cloud , Google Cloud CLI o l'API Serverless per Apache Spark per creare e inviare un batch di workload Serverless per Apache Spark.

    Console

    1. Nella console Google Cloud , vai a Batch Dataproc.

    2. Fai clic su Crea.

    3. Invia un carico di lavoro batch Spark che calcola il valore approssimativo di pi greco selezionando e compilando i seguenti campi:

    4. Fai clic su Invia per eseguire il carico di lavoro batch Spark.

    gcloud

    Per inviare un carico di lavoro batch Spark per calcolare il valore approssimativo di pi, esegui il seguente comando gcloud CLI gcloud dataproc batches submit spark localmente in una finestra del terminale o 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
    

    Sostituisci quanto segue:

    • REGION: Specifica la regione in cui verrà eseguito il workload.
    • Altre opzioni: puoi aggiungere flag gcloud dataproc batches submit spark per specificare altre opzioni del workload e proprietà Spark.
      • --version: Puoi specificare una versione del runtime Serverless per Apache Spark non predefinita.
      • --jars: Il file JAR di esempio è preinstallato nell'ambiente di esecuzione Spark. L'argomento del comando 1000 passato al workload SparkPi specifica 1000 iterazioni della logica di stima di pi greco (gli argomenti di input del workload sono inclusi dopo "-- ").
      • --subnet: Puoi aggiungere questo flag per specificare il nome di una subnet nella regione della sessione. Se non specifichi una subnet, Serverless per Apache Spark seleziona la subnet default nella regione della sessione. Serverless per Apache Spark abilita l'accesso privato Google (PGA) sulla subnet. Per i requisiti di connettività di rete, vedi Google Cloud Configurazione di rete di Serverless per Apache Spark.
      • --properties: Puoi aggiungere questo flag per inserire proprietà Spark supportate da utilizzare per il carico di lavoro batch Spark.
      • --deps-bucket: Puoi aggiungere questo flag per specificare un bucket Cloud Storage in cui Serverless per Apache Spark caricherà le dipendenze del carico di lavoro. Il prefisso URI gs:// del bucket non è obbligatorio; puoi specificare il percorso del bucket o il nome del bucket. Serverless for Apache Spark carica i file locali in una cartella /dependencies nel bucket prima di eseguire il workload batch. Nota: questo flag è obbligatorio se il tuo workload batch fa riferimento a file sul tuo computer locale.
      • --ttl: puoi aggiungere il flag --ttl per specificare la durata del batch. Quando il carico di lavoro supera questa durata, viene terminato in modo incondizionato senza attendere il completamento del lavoro in corso. Specifica la durata utilizzando un suffisso s, m, h o d (secondi, minuti, ore o giorni). Il valore minimo è 10 minuti (10m) e il valore massimo è 14 giorni (14d).
        • Batch di runtime 1.1 o 2.0: se --ttl non è specificato per un carico di lavoro batch di runtime 1.1 o 2.0, il carico di lavoro può essere eseguito finché non viene chiuso naturalmente (o per sempre se non viene chiuso).
        • Batch di runtime 2.1+: se --ttl non è specificato per un carico di lavoro batch di runtime 2.1 o versioni successive, il valore predefinito è 4h.
      • --service-account: puoi specificare un service account da utilizzare per eseguire il tuo workload. Se non specifichi un service account, il workload viene eseguito con l'account di servizio predefinito di Compute Engine. Il account di servizio deve avere il ruolo Worker Dataproc.
      • Hive Metastore: il seguente comando configura un carico di lavoro batch per utilizzare un Hive Metastore autogestito utilizzando una configurazione Spark standard.
        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 ...
                
      • Server di cronologia permanente:
        1. Il seguente comando crea un PHS su un cluster Dataproc a un singolo nodo. Il PHS deve trovarsi nella regione in cui esegui i carichi di lavoro batch e il bucket-name Cloud Storage deve esistere.
          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. Invia un carico di lavoro batch specificando il server di cronologia permanente in esecuzione.
          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
                        
      • Versione runtime: utilizza il flag --version per specificare la versione del runtime di Serverless per Apache Spark per il carico di lavoro.
        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

    Questa sezione mostra come creare un carico di lavoro batch per calcolare il valore approssimativo di pi utilizzando Serverless per Apache Spark batches.create`

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • project-id: Un ID progetto Google Cloud .
    • region: una regione di Compute Engine in cui Google Cloud Serverless per Apache Spark eseguirà il carico di lavoro.
    • Note:

      • PROJECT_ID: il tuo ID progetto Google Cloud . Gli ID progetto sono elencati nella sezione Informazioni sul progetto della Google Cloud console Dashboard.
      • REGION: la regione della sessione.

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

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

    Per inviare la richiesta, espandi una di queste opzioni:

    Dovresti ricevere una risposta JSON simile alla seguente:

    {
    "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"
    }
    

    Stima i costi del workload

    I carichi di lavoro serverless per Apache Spark utilizzano le unità di calcolo dei dati (DCU) e le risorse di archiviazione shuffle. Per un esempio che restituisce UsageMetrics di Dataproc per stimare il consumo di risorse e i costi del workload, consulta Prezzi di Serverless for Apache Spark.

    Passaggi successivi

    Scopri di più su: