Inviare un workload batch Apache Spark

Scopri come inviare un carico di lavoro batch sull' Google Cloud infrastruttura di calcolo gestita da Serverless per Apache Spark che scala le risorse in base alle esigenze.

Prima di iniziare

Configura il progetto e, se necessario, concedi i ruoli Identity and Access Management.

Configura il progetto

Esegui uno o più dei seguenti passaggi, se necessario:

  1. Accedi al tuo Google Cloud account. Se non hai mai utilizzato Google Cloud, crea un account per valutare il rendimento dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per eseguire, testare ed eseguire il deployment dei workload.
  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

Concedi i ruoli IAM, se necessario

Per eseguire gli esempi in questa pagina sono necessari alcuni ruoli IAM. A seconda delle policy dell'organizzazione, questi ruoli potrebbero essere già stati concessi. Per verificare le concessioni dei ruoli, consulta la sezione Devi concedere i ruoli?.

Per ulteriori informazioni sulla concessione dei ruoli, consulta Gestire l'accesso a progetti, cartelle e organizzazioni.

Ruoli utente

Per ottenere le autorizzazioni necessarie per inviare un workload batch serverless, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Ruolo dell'account di servizio

Per assicurarti che il account di servizio predefinito di Compute Engine disponga delle autorizzazioni necessarie per inviare un workload batch serverless, chiedi all'amministratore di concedere il Dataproc Worker (roles/dataproc.worker) ruolo IAM al account di servizio predefinito di Compute Engine sul progetto.

Invia un workload batch Spark

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

Console

  1. Nellaconsole, vai a Batch Dataproc. Google Cloud

  2. Fai clic su Crea.

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

    • Informazioni sul batch:
      • ID batch: specifica un ID per il workload 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 workload.
    • Contenitore:
      • Tipo di batch: Spark.
      • Versione runtime: conferma o seleziona la versione runtime 2.3.
      • Classe principale:
        org.apache.spark.examples.SparkPi
      • File JAR (questo file è preinstallato nell'ambiente di esecuzione Spark di Serverless per Apache Spark).
        file:///usr/lib/spark/examples/jars/spark-examples.jar
      • Argomenti: 1000.
    • Configurazione dell'esecuzione: seleziona Service Account. Per impostazione predefinita, il batch verrà eseguito utilizzando il service account predefinito di Compute Engine. Puoi specificare un account di servizio personalizzato. Il account di servizio predefinito o personalizzato deve avere il ruolo Dataproc Worker.
    • Configurazione di rete: seleziona una subnet nella regione della sessione. Serverless per Apache Spark abilita l'accesso privato Google (PGA) sulla subnet specificata. Per i requisiti di connettività di rete, consulta la sezione Google Cloud Configurazione di rete di Serverless per Apache Spark.
    • Proprietà: inserisci la Key (nome della proprietà) e il Value di proprietà Spark supportate da impostare nel workload batch Spark. Nota: a differenza delle proprietà del cluster Dataproc su Compute Engine , le proprietà del workload Serverless per Apache Spark non includono un spark: prefisso.
    • Altre opzioni:
  4. Fai clic su Invia per eseguire il workload batch Spark.

gcloud

Per inviare un workload batch Spark per calcolare il valore approssimativo di pi, esegui il seguente comando gcloud dataproc batches submit spark di gcloud CLI localmente in una finestra del terminale o in Cloud Shell.

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

Sostituisci quanto segue:

  • REGION: Specifica la regione in cui verrà eseguito il workload.
  • Altre opzioni: puoi aggiungere gcloud dataproc batches submit spark flag per specificare altre opzioni del workload e proprietà Spark.
    • --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, consulta la sezione Google Cloud Configurazione di rete di Serverless per Apache Spark.
    • --tags: puoi aggiungere questo flag per specificare i tag di rete per il controllo del traffico. Utilizza i tag di rete per limitare la connettività. In produzione, la prassi consigliata è limitare le regole firewall agli indirizzi IP utilizzati dai workload Spark.
    • --properties: puoi aggiungere questo flag per inserire proprietà Spark supportate da utilizzare per il workload batch Spark.
    • --deps-bucket: puoi aggiungere questo flag per specificare un bucket Cloud Storage in cui Serverless per Apache Spark caricherà le dipendenze del workload. Il prefisso URI gs:// del bucket non è obbligatorio; puoi specificare il percorso del bucket o il nome del bucket. Serverless per Apache Spark carica i file locali in una cartella /dependencies nel bucket prima di eseguire il workload batch. Nota: questo flag è obbligatorio se il workload batch fa riferimento a file sulla macchina locale.
    • --ttl: puoi aggiungere il --ttl flag per specificare la durata della durata del batch. Quando il workload supera questa durata, viene terminato incondizionatamente senza attendere il completazione del lavoro in corso. Specifica la durata utilizzando un s, m, h, o d (secondi, minuti, ore o giorni) suffisso. Il valore minimo è 10 minuti (10m), e il valore massimo è 14 giorni (14d).
      • Batch runtime 1.1 o 2.0: se --ttl non è specificato per un workload batch runtime 1.1 o 2.0, il workload può essere eseguito fino a quando non viene chiuso naturalmente (o per sempre se non viene chiuso).
      • Batch runtime 2.1+: se --ttl non è specificato per un workload batch runtime 2.1 o versioni successive, il valore predefinito è 4h.
    • --service-account: Puoi specificare un service account da utilizzare per eseguire il workload. Se non specifichi un account di servizio, il workload viene eseguito con il service account predefinito di Compute Engine. Il account di servizio deve avere il ruolo Dataproc Worker.
    • Metastore Hive: il seguente comando configura un workload batch in modo che utilizzi un metastore Hive esterno 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 nodo singolo. Il PHS deve trovarsi nella regione in cui esegui i workload 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 workload 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 --version flag per specificare la versione runtime di Serverless per Apache Spark per il workload.
      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 workload batch per calcolare il valore approssimativo di pi utilizzando Serverless per Apache Spark batches.create`

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

  • project-id: l' Google Cloud ID progetto.
  • region: una regione Compute Engine in cui Google Cloud Serverless per Apache Spark eseguirà il workload.
  • Note:

    • PROJECT_ID: l' Google Cloud ID progetto. Gli ID progetto sono elencati nella sezione Informazioni sul progetto su la 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"
    ],
    "runtimeConfig": {
      "version": "2.3",
    },
    "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 workload di Serverless per Apache Spark consumano risorse di unità di calcolo dati (DCU) e di archiviazione shuffle. Per un esempio che restituisce UsageMetrics di Dataproc per stimare il consumo di risorse e i costi del workload, consulta la sezione Prezzi di Serverless per Apache Spark.

Passaggi successivi

Scopri di più su: