Questo documento fornisce indicazioni per la risoluzione dei problemi comuni che impediscono l'avvio dei workload batch Spark e delle sessioni interattive diGoogle Cloud Serverless 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 è stato avviato 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à 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 che ti aiuteranno a risolverli.
Autorizzazioni account di servizio insufficienti
Il account di servizio utilizzato dal batch o dalla sessione di Serverless per Apache Spark richiede ruoli IAM specifici che includono autorizzazioni per l'operazione e l'accesso a Serverless per Apache Spark alle risorse. Google Cloud 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 obbligatorio: il account di servizio batch o sessione deve disporre del
ruolo Dataproc Worker (
roles/dataproc.worker
). Questo ruolo contiene le autorizzazioni minime necessarie a Serverless for Apache Spark per eseguire il provisioning e gestire le risorse di calcolo. - Autorizzazioni di accesso ai dati: se la tua applicazione Spark legge o scrive dati in Cloud Storage o BigQuery, il service account ha bisogno di ruoli correlati a questi servizi:
- Cloud Storage: per la lettura è necessario il ruolo
Storage Object Viewer
(roles/storage.objectViewer
), mentre per la scrittura è necessario il ruoloStorage Object Creator
(roles/storage.objectCreator
) o il ruoloStorage Object Admin
(roles/storage.admin
). - BigQuery: per la lettura è necessario il ruolo
BigQuery Data Viewer
(roles/bigquery.dataViewer
), mentre per la scrittura è necessario il ruoloBigQuery Data Editor
(roles/bigquery.dataEditor
).
- Cloud Storage: per la lettura è necessario il ruolo
- Autorizzazioni di logging: l'account di servizio deve disporre 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 specificato, il valore predefinito è l'account di servizio Compute Engine predefinito.
- Vai alla pagina IAM e amministrazione > IAM nella console Google Cloud , trova il account di servizio batch o di sessione e verifica che disponga dei ruoli necessari per le operazioni. Concedi i ruoli mancanti.
Quota insufficiente
Il superamento delle quote specifiche per progetto o regione per Google Cloud Serverless per Apache Spark o altre risorse Google Cloud può impedire l'avvio di nuovi batch o sessioni.
Suggerimenti per la risoluzione dei problemi:
Consulta la pagina Google Cloud Quote di Serverless per Apache Spark per comprendere i limiti per 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"
- Puoi anche utilizzare il comando
Se raggiungi ripetutamente i limiti di quota, valuta la possibilità di richiedere un aumento della quota tramite la console Google Cloud .
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 tuo batch o la tua sessione deve accedere alle API e ai servizi Google senza attraversare internet pubblico, 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 codice applicazione
Proprietà Spark configurate in modo errato, in particolare quelle relative alle risorse del driver, o 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
espark.driver.cores
. Verifica che rientrino in limiti ragionevoli e 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 a errori o complessità del codice.
Verifica che tutti i file JAR dell'applicazione, i file Python o le dipendenze specificate per il batch o la sessione si trovino correttamente in Cloud Storage e siano accessibili dal account di servizio batch o sessione.
Controllare i log
Un passaggio fondamentale per diagnosticare gli errori di creazione dei batch è esaminare i log dettagliati in Cloud Logging.
- Vai alla pagina Cloud Logging nella console Google Cloud .
- Filtra per batch o sessioni di Serverless per Apache Spark:
- Nel menu a discesa Risorsa, seleziona
Cloud Dataproc Batch
oCloud Dataproc Session
. - Filtra per
batch_id
osession_id
per il batch o la sessione non riusciti. Puoi anche filtrare perproject_id
elocation
(regione).
- Nel menu a discesa Risorsa, seleziona
- 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.