Risolvere i problemi relativi agli errori di creazione di batch e sessioni

Questo documento fornisce indicazioni per la risoluzione dei problemi comuni che impediscono l'avvio dei workload batch di Spark e delle sessioni interattive di Managed Service per Apache Spark.

Panoramica

In genere, quando un batch o una sessione non viene avviato, viene visualizzato il seguente messaggio di errore:

Driver compute node failed to initialize for batch in 600 seconds

Questo messaggio di errore indica che il driver Spark non è riuscito ad avviarsi entro il periodo di timeout predefinito di 600 secondi (10 minuti). Le cause comuni sono correlate alle autorizzazioni del account di servizio, alla disponibilità delle risorse, alla configurazione di rete o alle proprietà di Spark.

Cause di errori di avvio di batch e sessioni e passaggi per la risoluzione dei problemi

Le sezioni seguenti elencano le cause comuni degli errori di avvio di batch e sessioni con suggerimenti per la risoluzione dei problemi per aiutarti a risolvere i problemi.

Autorizzazioni del account di servizio insufficienti

Il account di servizio utilizzato dal batch o dalla sessione di Managed Service per Apache Spark richiede ruoli IAM specifici che includano le autorizzazioni per l'operazione di Managed Service per Apache Spark e l'accesso alle Google Cloud risorse. Se il account di servizio non dispone dei ruoli necessari, l'inizializzazione del driver Spark per il batch o la sessione potrebbe non riuscire.

  • Ruolo Worker richiesto: il account di servizio del batch o della sessione deve avere il ruolo Worker di Managed Service per Apache Spark (roles/dataproc.worker). Questo ruolo contiene le autorizzazioni minime necessarie a Managed Service per Apache Spark per eseguire il provisioning e gestire le risorse di calcolo.
  • Autorizzazioni di accesso ai dati: se l'applicazione Spark legge o scrive in Cloud Storage o BigQuery, il service account necessita di ruoli correlati a questi servizi:
    • Cloud Storage: il ruolo Storage Object Viewer (roles/storage.objectViewer) è necessario per la lettura, mentre il ruolo Storage Object Creator (roles/storage.objectCreator) o il ruolo Storage Object Admin (roles/storage.admin) è necessario per la scrittura.
    • BigQuery: il ruolo BigQuery Data Viewer (roles/bigquery.dataViewer) è necessario per la lettura, mentre il ruolo BigQuery Data Editor (roles/bigquery.dataEditor) è necessario per la scrittura.
  • Autorizzazioni di logging: il account di servizio necessita di un ruolo con l'autorizzazione per scrivere i log in Cloud Logging. In genere, il ruolo Logging Writer (roles/logging.logWriter) è sufficiente.

Suggerimenti per la risoluzione dei problemi:

  • Identifica il service account del batch o della sessione . Se non viene specificato, il valore predefinito è il service account Compute Engine predefinito.
  • Vai alla pagina **IAM e amministrazione > IAM** nella Google Cloud console, individua il account di servizio del batch o della sessione, e verifica che disponga dei ruoli necessari per le operazioni. Concedi i ruoli mancanti.

Quota insufficiente

Il superamento delle quote specifiche del progetto o della regione per Managed Service per Apache Spark o altre Google Cloud risorse può impedire l'avvio di nuovi batch o sessioni.

Suggerimenti per la risoluzione dei problemi:

  • Consulta la pagina delle quote di Managed Service per Apache Spark per comprendere i limiti relativi a batch simultanei, DCU e spazio di archiviazione shuffle.

    • Puoi anche utilizzare il comando gcloud compute quotas list per visualizzare l'utilizzo e i limiti attuali per il tuo progetto e la tua regione:
      gcloud compute quotas list --project=PROJECT_ID --filter="service:dataproc.googleapis.com"
      
  • Se superi ripetutamente i limiti di quota, valuta la possibilità di richiedere un aumento della quota tramite la Google Cloud console.

Problemi di configurazione di rete

Impostazioni di rete errate, come la configurazione VPC, l'accesso privato Google o le regole firewall, possono impedire l'inizializzazione del driver Spark o la connessione ai servizi necessari.

Suggerimenti per la risoluzione dei problemi:

  • Verifica che la rete VPC e la subnet specificate per il batch o la sessione siano configurate correttamente e dispongano di indirizzi IP sufficienti.

  • Se il batch o la sessione deve accedere alle API di Google e ai servizi Google senza attraversare la rete internet pubblica, verifica che l'accesso privato Google sia abilitato per la subnet.

  • Esamina le regole firewall VPC per verificare che non blocchino inavvertitamente la comunicazione interna o l'uscita verso le API di Google o i servizi esterni richiesti dall'applicazione Spark.

Problemi relativi a proprietà Spark non valide o al codice dell'applicazione

Le proprietà di Spark configurate in modo errato, in particolare quelle relative alle risorse del driver, o i problemi all'interno del codice dell'applicazione Spark possono causare errori di avvio.

Suggerimenti per la risoluzione dei problemi:

  • Controlla i valori di spark.driver.memory e spark.driver.cores. Verifica che rientrino in limiti ragionevoli e che siano in linea con le DCU disponibili. Valori eccessivamente grandi per queste proprietà possono causare l'esaurimento delle risorse e errori di inizializzazione. Rimuovi le proprietà Spark non necessarie o sperimentali per semplificare il debug.

  • Prova a eseguire un'applicazione Spark "Hello World" per determinare se il problema riguarda la configurazione dell'ambiente o è dovuto alla complessità o agli errori del codice.

  • Verifica che tutti i file JAR, i file Python o le dipendenze dell'applicazione specificati per il batch o la sessione si trovino correttamente in Cloud Storage e siano accessibili dal account di servizio del batch o della sessione.

Controlla i log

Un passaggio fondamentale per diagnosticare gli errori di creazione dei batch è esaminare i log dettagliati in Cloud Logging.

  1. Vai alla pagina Cloud Logging nella Google Cloud console.
  2. Filtra per batch o sessioni di Managed Service per Apache Spark:
    1. Nel menu a discesa Risorsa, seleziona Cloud Managed Service for Apache Spark Batch o Cloud Managed Service for Apache Spark Session.
    2. Filtra per batch_id o session_id per il batch o la sessione non riuscita. Puoi anche filtrare per project_id e location (regione).
  3. Cerca le voci di log con jsonPayload.component="driver". Questi log spesso contengono messaggi di errore specifici o stack trace che possono individuare il motivo dell'errore di inizializzazione del driver prima che si verifichi il timeout di 600 secondi.