Esegui un carico di lavoro batch Apache Spark

Configurazione

  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 dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

  4. Attiva l'API Dataproc.

    Abilita l'API

  5. Nella pagina del selettore dei progetti in Google Cloud Console, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  6. Assicurati che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata su un progetto.

  7. Attiva l'API Dataproc.

    Abilita l'API

Invia un carico di lavoro batch Spark

console

Vai a batch di Dataproc in Google Cloud Console. Fai clic su CREA per aprire la pagina Crea gruppo.

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

  • Informazioni sul batch
    • ID batch: specifica un ID per il carico di lavoro del batch. Questo valore deve essere compreso tra 4 e 63 caratteri minuscoli. I caratteri validi sono /[a-z][0-9]-/.
    • Area geografica: seleziona un'area geografica in cui verrà eseguito il carico di lavoro.
  • Contenitore
    • Tipo di batch: Spark
    • Classe principale:
      org.apache.spark.examples.SparkPi
    • File jar:
      file:///usr/lib/spark/examples/jars/spark-examples.jar
    • Argomenti: 1000
  • Configurazione dell'esecuzione Puoi specificare un account di servizio da utilizzare per eseguire il tuo carico di lavoro. Se non specifichi un account di servizio, il carico di lavoro verrà eseguito in l'account di servizio predefinito di Compute Engine.
  • Configurazione di rete La subnet VPC che esegue i carichi di lavoro Serverless Spark deve soddisfare i requisiti elencati in Dataproc Serverless for Spark network configuration. L'elenco delle subnet mostra le subnet nella rete selezionata che sono abilitate per l'accesso privato Google.
  • Proprietà: inserisci il valore della chiave (nome della proprietà) di tutte le proprietà Spark supportate che vuoi vengano utilizzate dal carico di lavoro in batch di Spark. Nota: a differenza di Dataproc su proprietà cluster di Compute Engine, le proprietà del carico di lavoro Serverless di Spark per Spark non includono un prefisso "spark:".
  • Altre opzioni

Fai clic su INVIA per eseguire il carico di lavoro in batch Spark.

gcloud

Per inviare un carico di lavoro batch Spark per calcolare il valore approssimativo di pi, esegui il seguente comando dell'interfaccia a riga di comando gcloud gcloud dataproc batchs invia spark 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:

  • Subnet: la subnet VPC che esegue i carichi di lavoro Serverless Spark deve soddisfare i requisiti elencati nella configurazione della rete Serverlesspro per Spark. Se la subnet di default di rete per l'area geografica specificata nel comando gcloud dataproc batches submit non è abilitata per l'accesso privato Google, devi eseguire una delle seguenti operazioni:
    1. Attiva la subnet di rete predefinita per l'area geografica per l'accesso privato Google oppure
    2. Utilizza il flag --subnet=[SUBNET_URI] nel comando per specificare una subnet per 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 e l'argomento di comando --1000 passato al carico di lavoro SparkPi specifica 1000 iterazioni della logica di stima pi (inclusi gli argomenti di input del carico di lavoro dopo "--").
  • --properties: puoi aggiungere il flag --properties per inserire qualsiasi proprietà Spark supportata che vuoi che venga utilizzata dal carico di lavoro batch di Spark.
  • --deps-bucket: puoi aggiungere questo flag per specificare un bucket Cloud Storage in cui Dataproc Serverless per Spark caricherà le dipendenze dei carichi di lavoro. Il prefisso dell'URI gs:// del bucket non è richiesto; puoi specificare solo il percorso/nome del bucket, ad esempio "mybucketname". Eccezione: se il tuo carico di lavoro in batch fa riferimento ai file sulla tua macchina locale, è obbligatorio il flag --deps-bucket; Dataproc Serverless per Spark caricherà i file locali in una cartella /dependencies nel bucket prima di eseguire il carico di lavoro in batch.
  • --container-image: puoi specificare un'immagine 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. Devi ospitare il container personalizzato su Container Registry.
  • Altre opzioni:
    • Puoi aggiungere altri flag di comando facoltativi. Ad esempio, il seguente comando configura il carico di lavoro in batch per l'utilizzo di un autogestito Hive Metastoreesistente utilizzando una configurazione Spark standard:
      gcloud beta dataproc batches submit \
          --properties=spark.sql.catalogImplementation=hive,spark.hive.metastore.uris=METASTORE_URI,spark.hive.metastore.warehouse.dir=WAREHOUSE_DIR> \
          other args ...
                 
      Vedi gcloud dataproc batches submit per i flag dei comandi supportati.
    • Utilizza un server di cronologia permanente.
      1. Crea un server di cronologia permanente (PHS) su un cluster Dataproc a nodo singolo. Nota: deve essere presente bucket-name di Cloud Storage.
        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
                      

REST &CMD LINE

Questa sezione mostra come creare un carico di lavoro batch per calcolare il valore approssimativo di pi utilizzando l'API batchs.create di Dataproc Serverless per Spark.

Prima di utilizzare uno qualsiasi dei dati della richiesta, effettua le seguenti sostituzioni:

  • project-id: ID progetto Google Cloud
  • region: area geografica
  • Note:
    • Custom-container-image: specifica l'immagine 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 su Container Registry.
    • Subnet: se la subnet di default per la region specificata non è abilitata per l'accesso privato Google, devi eseguire una delle seguenti operazioni:
      1. Attiva la subnet di rete predefinita per region per l'accesso privato Google; oppure
      2. Utilizza il campo ExecutionConfig.subnetworkUri per specificare una subnet per 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 di Spark. Il carattere "1000" sparkBatch.args viene passato al carico di lavoro SparkPi e specifica 1000 iterazioni della logica di stima pi
    • Spark properties: puoi utilizzare il campo RuntimeConfig.properties per inserire le proprietà Spark supportate che vuoi utilizzare per il carico di lavoro in batch di Spark.
    • Altre opzioni:

    Metodo HTTP e URL:

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

    Corpo JSON 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"
    }