Esegui un carico di lavoro batch Apache Spark

Scopri come utilizzare Dataproc Serverless per inviare un carico di lavoro batch su un'infrastruttura di computing gestita da Dataproc che scala le risorse in base alle esigenze.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Attiva l'API Dataproc.

    Abilita l'API

  5. Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  6. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  7. Attiva l'API Dataproc.

    Abilita l'API

Invio di un carico di lavoro batch Spark

Console

  1. Nella console Google Cloud, vai a Dataproc Batch. Fai clic su Crea per aprire la pagina Crea batch.

  2. Seleziona e compila i seguenti campi della pagina per inviare un carico di lavoro batch Spark che calcoli il valore approssimativo di pi greco:

    • Informazioni sul batch:
      • ID batch: specifica un ID per il carico di lavoro batch. Questo valore deve contenere da 4 a 63 caratteri minuscoli. I caratteri validi sono /[a-z][0-9]-/.
      • Regione: seleziona una regione in cui verrà eseguito il carico di lavoro.
    • Container:
      • Tipo di batch: Spark.
      • Versione runtime: è selezionata la versione runtime predefinita. Facoltativamente, puoi specificare una versione del runtime Dataproc Serverless non predefinita.
      • Classe principale:
        org.apache.spark.examples.SparkPi
      • File jar (questo file è preinstallato nell'ambiente di esecuzione Spark serverless Dataproc).
        file:///usr/lib/spark/examples/jars/spark-examples.jar
      • Argomenti: 1000.
    • Configurazione di esecuzione: puoi specificare un account di servizio da utilizzare per eseguire il carico di lavoro. Se non specifichi un account di servizio, il carico di lavoro viene eseguito nell'account di servizio predefinito di Compute Engine.
    • Configurazione di rete: la subnet VPC che esegue Dataproc Serverless per i carichi di lavoro Spark deve essere abilitata per l'accesso privato Google e soddisfare gli altri requisiti elencati in Configurazione di rete Dataproc Serverless per Spark. L'elenco di subnet mostra le subnet nella rete selezionata abilitate per l'accesso privato Google.
    • Proprietà: inserisci i valori Key (nome proprietà) e Value delle proprietà Spark supportate da impostare nel carico di lavoro batch Spark. Nota: a differenza delle proprietà cluster di Dataproc su Compute Engine, le proprietà dei carichi di lavoro di Dataproc Serverless per Spark non includono un prefisso spark:.
    • Altre opzioni:
  3. Fai clic su INVIA per eseguire il carico di lavoro batch Spark.

gcloud

Per inviare un carico di lavoro batch Spark al fine di calcolare il valore approssimativo di pi, esegui il seguente gcloud CLI;interfaccia a riga di comando 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

Note:

  • REGION: Specifica la regione in cui verrà eseguito il carico di lavoro.
  • Subnet: la subnet VPC che esegue Dataproc Serverless per i carichi di lavoro Spark deve essere abilitata per l'accesso privato Google e soddisfare gli altri requisiti elencati in Configurazione di rete Dataproc Serverless per Spark. Se la subnet della rete default per la regione specificata nel comando gcloud dataproc batches submit non è abilitata per l'accesso privato Google, devi eseguire una delle seguenti operazioni:
    • Abilita l'accesso privato Google per la subnet della rete predefinita per la regione oppure
    • Utilizza il flag --subnet=[SUBNET_URI] nel comando per specificare una subnet in cui è abilitato l'accesso privato Google. Puoi eseguire il comando gcloud compute networks describe [NETWORK_NAME] per elencare gli URI delle subnet in una rete.
  • --jars: il file JAR di esempio è preinstallato nell'ambiente di esecuzione Spark. L'argomento del comando 1000 passato al carico di lavoro SparkPi specifica 1000 iterazioni della logica di stima pi (gli argomenti di input del carico di lavoro sono inclusi dopo "--").
  • --properties: puoi aggiungere il flag --properties per inserire le proprietà Spark supportate che vuoi che utilizzi il carico di lavoro batch Spark.
  • --deps-bucket: puoi aggiungere questo flag per specificare un bucket Cloud Storage in cui Dataproc Serverless caricherà le dipendenze dei carichi di lavoro. Il prefisso dell'URI gs:// del bucket non è obbligatorio; puoi specificare il percorso o il nome del bucket, ad esempio "mybucketname". Dataproc Serverless per Spark carica i file locali in una cartella /dependencies del bucket prima di eseguire il carico di lavoro batch. Nota: questo flag è obbligatorio se il carico di lavoro batch fa riferimento ai file sulla tua macchina locale.
  • --ttl: puoi aggiungere il flag --ttl per specificare la durata della durata del batch. Quando il carico di lavoro supera questa durata, viene arrestato incondizionatamente 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 fino a quando non viene chiuso naturalmente (oppure viene eseguito all'infinito se non si chiude).
    • Batch di runtime 2.1 e versioni successive:se --ttl non è specificato per un carico di lavoro batch di runtime 2.1 o versioni successive, il valore predefinito sarà 4h.
  • Altre opzioni: puoi aggiungere flag dei comandi gcloud dataproc batches submit per specificare altre opzioni per i carichi di lavoro e proprietà Spark.
    • Hive Metastore: il comando seguente configura un carico di lavoro batch per l'utilizzo di un metastore Hive autogestito esterno mediante una configurazione Spark standard.
      gcloud dataproc batches submit \
          --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 comando seguente crea un PHS su un cluster Dataproc a nodo singolo. Il PHS deve trovarsi nella regione in cui vengono eseguiti carichi di lavoro batch e il valore bucket-name di 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: usa il flag --version per specificare la versione del runtime Dataproc Serverless 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 Dataproc Serverless per Spark batches.create"

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

  • project-id: un ID progetto Google Cloud.
  • region: una regione di Compute Engine in cui Dataproc Serverless eseguirà il carico di lavoro.
  • Note:
    • Custom-container-image: specifica l'immagine del container personalizzata utilizzando il formato di denominazione delle immagini Docker: {hostname}/{project-id}/{image}:{tag}, ad esempio "gcr.io/my-project-id/my-image:1.0.1". Nota: devi ospitare il container personalizzato in Container Registry.
    • Subnet: la subnet VPC che esegue Dataproc Serverless per i carichi di lavoro Spark deve essere abilitata per l'accesso privato Google e soddisfare gli altri requisiti elencati in Configurazione di rete Dataproc Serverless per Spark. Se la subnet della rete default per la regione specificata non è abilitata per l'accesso privato Google, devi eseguire una delle seguenti operazioni:
      1. Abilita l'accesso privato Google per la subnet della rete predefinita per la regione oppure
      2. Utilizza il campo ExecutionConfig.subnetworkUri per specificare una subnet in cui è abilitato l'accesso privato Google. Puoi eseguire il comando gcloud compute networks describe [NETWORK_NAME] per elencare gli URI delle subnet in una rete.
    • sparkBatch.jarFileUris:il file jar di esempio è preinstallato nell'ambiente di esecuzione Spark. Il valore "1000" sparkBatch.args viene passato al carico di lavoro SparkPi e specifica 1000 iterazioni della logica di stima del pi greco.
    • Spark properties: puoi utilizzare il campo RuntimeConfig.properties per inserire le proprietà Spark supportate che vuoi che utilizzi il carico di lavoro batch Spark.
    • --ttl: puoi utilizzare il campo EnvironmentConfig.ttl per specificare la durata della durata del batch. Quando il carico di lavoro supera questa durata, viene arrestato incondizionatamente senza attendere il completamento del lavoro in corso. Specifica la durata come rappresentazione JSON per Duration. Il valore minimo è 10 minuti e il valore massimo è 14 giorni.
      • 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 fino a quando non viene chiuso naturalmente (oppure viene eseguito all'infinito se non si chiude).
      • Batch di runtime 2.1 e versioni successive:se --ttl non è specificato per un carico di lavoro batch di runtime 2.1 o versioni successive, il valore predefinito sarà di 4 ore.
    • Altre opzioni:

    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":{
        "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 carico di lavoro

Dataproc Serverless per i carichi di lavoro Spark utilizza Data Compute Unit (DCU) e esegue lo shuffling delle risorse di archiviazione. Per un esempio che restituisce Dataproc UsageMetrics per stimare il consumo e i costi delle risorse dei carichi di lavoro, consulta Prezzi di Dataproc Serverless .

Passaggi successivi

Scopri di più su: