Esegui un carico di lavoro batch Apache Spark

Scopri come utilizzare Dataproc Serverless per inviare un carico di lavoro batch su una Infrastruttura di calcolo 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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

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

  4. Attiva l'API Dataproc.

    Abilita l'API

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

    Go to project selector

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

  7. Attiva l'API Dataproc.

    Abilita l'API

Invia un carico di lavoro batch Spark

Console

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

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

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

gcloud

Invia un carico di lavoro batch Spark per calcolare il valore approssimativo di pi, esegui la seguente interfaccia alla gcloud CLI gcloud dataproc batches submit spark localmente in una finestra del terminale o 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 abilitato 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 specificata nel comando gcloud dataproc batches submit non è abilitata per Accesso privato Google, devi effettuare una delle seguenti operazioni:
    • Abilita la subnet della rete predefinita per la regione per l'accesso privato Google oppure
    • Utilizza il flag --subnet=[SUBNET_URI] nel comando per specificare una subnet in cui è abilitato l'accesso privato Google. Puoi eseguire 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 incluso dopo "-- ").
  • --properties: puoi aggiungere --properties per inserire proprietà Spark supportate che vuoi venga utilizzato dal carico di lavoro batch Spark.
  • --deps-bucket: puoi aggiungere questa segnalazione a specificare un bucket Cloud Storage in cui Dataproc serverless caricherà le dipendenze dei carichi di lavoro. Il prefisso 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 in una cartella /dependencies del bucket prima di eseguire carico di lavoro batch. Nota: questo flag è obbligatorio se i dati batch sul tuo carico di lavoro fa riferimento ai file sul tuo computer locale.
  • --ttl: puoi aggiungere --ttl per specificare la durata della durata del batch. Quando il carico di lavoro supera questa durata, viene terminata incondizionatamente senza attendere il lavoro in corso. Specifica la durata utilizzando un parametro 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, può essere eseguito fino a quando non viene chiuso naturalmente (o in esecuzione all'infinito se non esce).
    • Batch di runtime 2.1 e successivi:se --ttl non è specificato per un carico di lavoro batch di runtime 2.1 o versioni successive, il valore predefinito è 4h.
  • Altre opzioni:puoi aggiungere gcloud dataproc batches submit per specificare altre opzioni dei carichi di lavoro e le proprietà Spark.
    • Hive Metastore: il comando seguente configura un carico di lavoro batch per l'utilizzo di una Hive Metastore autogestito utilizzando 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 Dataproc a nodo singolo in un cluster Kubernetes. Il PHS deve trovarsi nella regione in cui vengono eseguiti i carichi di lavoro batch, e l'bucket-name di Cloud Storage deve esistono.
        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 un progetto Dataproc serverless la versione runtime 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 container personalizzata utilizzando il metodo Formato di denominazione delle immagini Docker: {hostname}/{project-id}/{image}:{tag}, ad esempio, "gcr.io/my-project-id/my-image:1.0.1". Nota: il container personalizzato deve essere ospitato su Container Registry.
    • Subnet: La subnet VPC che esegue Dataproc serverless per i carichi di lavoro Spark deve essere abilitato per l'accesso privato Google e soddisfare gli altri requisiti elencati in Configurazione di rete Dataproc serverless per Spark. Se default che la subnet di rete per la regione specificata non sia abilitata per Accesso privato Google, devi effettuare una delle seguenti operazioni:
      1. Abilita la subnet della rete predefinita per la regione per l'accesso privato Google oppure
      2. Utilizza la ExecutionConfig.subnetworkUri per specificare una subnet in cui è abilitato l'accesso privato Google. Puoi eseguire gcloud compute networks describe [NETWORK_NAME] per elencare gli URI delle subnet in una rete.
    • sparkBatch.jarFileUris: il file jar di esempio è sono preinstallate nell'ambiente di esecuzione Spark. "1000" sparkBatch.args viene passata al carico di lavoro SparkPi e specifica 1000 iterazioni della stima pi logica.
    • Spark properties: puoi utilizzare RuntimeConfig.properties per inserire proprietà Spark supportate che vuoi venga utilizzato dal carico di lavoro batch Spark.
    • --ttl: puoi utilizzare EnvironmentConfig.ttl per specificare la durata della durata del batch. Quando il carico di lavoro supera questa durata, viene terminata incondizionatamente senza attendere il lavoro in corso. Specifica la durata come rappresentazione JSON per Durata. Il valore minimo è 10 minuti, mentre 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, può essere eseguito fino a quando non viene chiuso naturalmente (o in esecuzione all'infinito se non esce).
      • Batch di runtime 2.1 e successivi:se --ttl non è specificato per un carico di lavoro batch di runtime 2.1 o versioni successive, il valore predefinito è 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 delle seguenti 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 dei carichi di lavoro

Dataproc Serverless per carichi di lavoro Spark utilizza Data Compute Unit (DCU) e lo shuffling delle risorse di archiviazione. Per un esempio di output di Dataproc UsageMetrics per stimare il consumo e i costi delle risorse del carico di lavoro, consulta i prezzi di Dataproc Serverless .

Passaggi successivi

Scopri di più su: