Questo documento descrive come monitorare e risolvere i problemi di Dataproc Serverless per i carichi di lavoro batch di Spark utilizzando l'interfaccia utente di Spark.
UI Spark
L'interfaccia utente di Spark raccoglie i dettagli di esecuzione di Apache Spark da Dataproc Serverless per i carichi di lavoro batch di Spark. La funzionalità UI di Spark, attivata per impostazione predefinita, non prevede alcun costo.
I dati raccolti dalla funzionalità dell'interfaccia utente di Spark vengono conservati per 90 giorni. Puoi utilizzare questa interfaccia web per monitorare e eseguire il debug dei carichi di lavoro Spark senza dover creare un server di cronologia permanente.
Autorizzazioni e ruoli di Identity and Access Management richiesti
Per utilizzare la funzionalità UI di Spark con i carichi di lavoro batch, sono necessarie le seguenti autorizzazioni.
Autorizzazione di raccolta dei dati:
dataproc.batches.sparkApplicationWrite
. Questa autorizzazione deve essere concessa all'account di servizio che esegue i carichi di lavoro batch. Questa autorizzazione è inclusa nel ruoloDataproc Worker
, che viene concesso automaticamente all'account di servizio predefinito di Compute Engine utilizzato per impostazione predefinita da Dataproc Serverless (consulta Account di servizio Dataproc Serverless). Tuttavia, se specifichi un account di servizio personalizzato per il tuo carico di lavoro batch, devi aggiungere l'autorizzazionedataproc.batches.sparkApplicationWrite
a quell'account di servizio (in genere, concedendo all'account di servizio il ruolo DataprocWorker
).Autorizzazione di accesso a UI Spark:
dataproc.batches.sparkApplicationRead
. Questa permission deve essere concessa a un utente per accedere all'interfaccia utente di Spark nella console Google Cloud. Questa autorizzazione è inclusa nei ruoliDataproc Viewer
,Dataproc Editor
eDataproc Administrator
. Per aprire l'interfaccia utente di Spark nella console Google Cloud, devi disporre di uno di questi ruoli o di un ruolo personalizzato che includa questa autorizzazione.
Apri l'interfaccia utente Spark
La pagina dell'interfaccia utente di Spark è disponibile nella console Google Cloud per i carichi di lavoro batch di Spark.
Vai alla pagina Sessioni interattive Dataproc Serverless.
Fai clic su un ID batch per aprire la pagina dei dettagli del batch.
Fai clic su Visualizza interfaccia utente di Spark nel menu in alto.
Il pulsante Visualizza interfaccia utente di Spark è disattivato nei seguenti casi:
- Se non viene concessa un'autorizzazione richiesta
- Se deselezioni la casella di controllo Abilita UI Spark nella pagina Dettagli batch
- Se imposti la proprietà
spark.dataproc.appContext.enabled
sufalse
quando invii un carico di lavoro batch
Limitazioni
L'interfaccia utente di Spark non supporta i seguenti carichi di lavoro Dataproc Serverless:
Server di cronologia permanente
Dataproc Serverless per Spark crea le risorse di calcolo necessarie per eseguire un carico di lavoro, lo esegue su queste risorse ed elimina le risorse al termine del carico di lavoro. Le metriche e gli eventi del carico di lavoro non rimangono dopo il completamento di un carico di lavoro. Tuttavia, puoi utilizzare un server di cronologia permanente (PHS) per conservare la cronologia dell'applicazione del carico di lavoro (log degli eventi) in Cloud Storage.
Per utilizzare un PHS con un carico di lavoro batch:
Specifica il tuo PHS quando invii un carico di lavoro.
Utilizza il Component Gateway per connetterti al PHS per visualizzare i dettagli dell'applicazione, le fasi del programmatore, i dettagli a livello di attività e le informazioni sull'ambiente e sull'eseguitore.
Log di Dataproc Serverless per Spark
La registrazione è abilitata per impostazione predefinita in Dataproc Serverless per Spark e i log del carico di lavoro rimangono dopo il completamento di un carico di lavoro. Dataproc Serverless per Spark raccoglie i log del carico di lavoro in Cloud Logging.
Puoi accedere ai log di Dataproc Serverless per Spark nella risorsaCloud Dataproc Batch
in Esplora log.
Esegui query sui log di Dataproc Serverless per Spark
Esplora log nella console Google Cloud fornisce un riquadro di query per aiutarti a creare una query per esaminare i log dei carichi di lavoro batch. Ecco i passaggi da seguire per creare una query per esaminare i log del carico di lavoro batch:
- Il progetto corrente è selezionato. Puoi fare clic su Perfeziona ambito progetto per selezionare un altro progetto.
Definisci una query sui log batch.
Utilizza i menu dei filtri per filtrare in base a un carico di lavoro batch.
In Tutte le risorse, seleziona la risorsa Cloud Dataproc Batch.
Nel riquadro Seleziona risorsa, seleziona la LOCALITÀ del lotto e poi l'ID LOTTO. Questi parametri batch sono elencati nella pagina Batch di Dataproc nella console Google Cloud.
Fai clic su Applica.
In Seleziona i nomi dei log, inserisci
dataproc.googleapis.com
nella casella Cerca nomi dei log per limitare i tipi di log da sottoporre a query. Seleziona uno o più nomi di file log elencati.
Utilizza l'editor di query per filtrare i log specifici della VM.
Specifica il tipo di risorsa e il nome della risorsa VM come mostrato nell'esempio seguente:
Note:resource.type="cloud_dataproc_batch" labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
- BATCH_UUID:l'UUID del batch è elencato nella pagina Dettagli batch della console Google Cloud, che si apre quando fai clic sull'ID batch nella pagina Batch.
I log batch elencano anche l'UUID del batch nel nome della risorsa VM. Ecco un esempio di file driver.log batch:
Fai clic su Esegui query.
Tipi di log e query di esempio di Dataproc Serverless per Spark
L'elenco seguente descrive i diversi tipi di log di Dataproc Serverless e fornisce query di Esplora log di esempio per ciascun tipo di log.
dataproc.googleapis.com/output
: questo file di log contiene l'output del carico di lavoro batch. Dataproc Serverless per Spark esegue lo streaming dell'output batch nel namespaceoutput
e imposta il nome file suJOB_ID.driver.log
.Query di esempio di Esplora log per i log di output:
resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Foutput"
dataproc.googleapis.com/spark
: lo spazio dei nomispark
aggrega i log di Spark per i demoni e gli executor in esecuzione sulle VM master e worker del cluster Dataproc. Ogni voce di log include un'etichetta del componentemaster
,worker
oexecutor
per identificare l'origine del log, come segue:executor
: log degli esecutori di codice utente. In genere, si tratta di log distribuiti.master
: log del master del gestore delle risorse autonomo Spark, simili ai log YARNResourceManager
di Dataproc su Compute Engine.worker
: log del worker del gestore delle risorse Spark autonomo, simili ai log YARNNodeManager
di Dataproc su Compute Engine.
Query di esempio di Esplora log per tutti i log nello spazio dei nomi
spark
:resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fspark"
Query di esempio di Esplora log per i log dei componenti autonomi Spark nello spazio dei nomi
spark
:resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fspark" jsonPayload.component="COMPONENT"
dataproc.googleapis.com/startup
: lo spazio dei nomistartup
include i log di avvio del batch (cluster). Sono inclusi eventuali log dello script di inizializzazione. I componenti sono identificati dall'etichetta, ad esempio: Query di esempio di Esplora log per i log di avvio su una VM specificata:startup-script[855]: ... activate-component-spark[3050]: ... enable spark-worker
resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fstartup" labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
dataproc.googleapis.com/agent
: lo spazio dei nomiagent
aggrega i log dell'agente Dataproc. Ogni voce di log include l'etichetta del nome file che identifica l'origine del log.Query di esempio di Esplora log per i log dell'agente generati da una VM worker specificata:
resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fagent" labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCHUUID-wWORKER#"
dataproc.googleapis.com/autoscaler
: lo spazio dei nomiautoscaler
aggrega i log dell'autoscaler di Dataproc Serverless per Spark.Query di esempio di Esplora log per i log dell'agente generati da una VM worker specificata:
resource.type="cloud_dataproc_batch" resource.labels.location="REGION" resource.labels.batch_id="BATCH_ID" logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fautoscaler" labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCHUUID-wWORKER#"
Per ulteriori informazioni, consulta la sezione Log di Dataproc.
Audit log di Dataproc Serverless
Per informazioni sugli audit log di Dataproc Serverless, consulta Log di controllo di Dataproc.
Metriche relative ai carichi di lavoro
Per impostazione predefinita, Dataproc Serverless per Spark abilita la raccolta delle metriche Spark disponibili, a meno che non utilizzi proprietà di raccolta delle metriche Spark per disattivare o sostituire la raccolta di una o più metriche Spark.
Puoi visualizzare le metriche relative al carico di lavoro da Explorer di metriche o dalla pagina Dettagli batch nella console Google Cloud.
Metriche batch
Le metriche delle risorse batch
Dataproc forniscono informazioni sulle risorse batch, come il numero di esecutori batch. Le metriche batch sono precedute dal prefisso dataproc.googleapis.com/batch
.
Metriche Spark
Le metriche Spark disponibili includono le metriche del driver e dell'executor di Spark e le metriche di sistema. Le metriche Spark disponibili sono precedute da custom.googleapis.com/
.
Configurare gli avvisi sulle metriche
Puoi creare avvisi sulle metriche Dataproc per ricevere una notifica in caso di problemi con il carico di lavoro.
Creare grafici
Puoi creare grafici che visualizzano le metriche del carico di lavoro utilizzando Metric Explorer nella console Google Cloud. Ad esempio, puoi creare un grafico per visualizzare disk:bytes_used
e poi filtrare per batch_id
.
Cloud Monitoring
Il monitoraggio utilizza metriche e metadati dei carichi di lavoro per fornire informazioni sull'integrità e sulle prestazioni dei carichi di lavoro Dataproc Serverless per Spark. Le metriche relative al carico di lavoro includono metriche Spark, metriche batch e metriche di operazione.
Puoi utilizzare Cloud Monitoring nella console Google Cloud per esplorare le metriche, aggiungere grafici, creare dashboard e avvisi.
Creare dashboard
Puoi creare una dashboard per monitorare i carichi di lavoro utilizzando le metriche di più progetti e diversi prodotti Google Cloud. Per saperne di più, consulta Creare e gestire dashboard personalizzate.
Risoluzione dei problemi avanzata (anteprima)
Questa sezione illustra le funzionalità di risoluzione dei problemi avanzate (anteprima) disponibili nella console Google Cloud. Queste funzionalità includono la risoluzione dei problemi con l'assistenza di Gemini per Dataproc Serverless, che fa parte dell'offerta Gemini in BigQuery.
Accesso alle funzionalità in anteprima
Per registrarti alla release di anteprima delle funzionalità di risoluzione dei problemi avanzate, compila e invia il modulo di registrazione a Gemini in BigQuery pre-GA. Una volta approvato il modulo, i progetti elencati al suo interno avranno accesso alle funzionalità di anteprima.
Visualizza l'anteprima dei prezzi
La partecipazione all'anteprima non comporta costi aggiuntivi. Gli addebiti verranno applicati alle seguenti funzionalità di anteprima quando diventeranno disponibile per la generalità degli utenti (GA):
- Risoluzione dei problemi con l'assistenza di Gemini per Dataproc Serverless
- Aspetti salienti delle metriche batch
- Log job
La notifica anticipata degli addebiti di GA verrà inviata all'indirizzo email che fornisci nel modulo di registrazione dell'anteprima.
Requisiti delle funzionalità
Registrazione: devi registrarti per la funzionalità.
Autorizzazione: devi disporre dell'autorizzazione
dataproc.batches.analyze
.Se disponi del ruolo predefinito
roles/dataproc.admin
,roles/dataproc.editor
oroles/dataproc.viewer
, hai l'autorizzazione richiesta. Non sono necessari ulteriori interventi.Se utilizzi un ruolo personalizzato per accedere ai servizi Dataproc, il ruolo personalizzato deve disporre dell'autorizzazione
dataproc.batches.analyze
. Puoi utilizzare gcloud CLI per aggiungere l'autorizzazione, come mostrato nel comando seguente, che aggiunge l'autorizzazione a livello di progetto:
gcloud iam roles update CUSTOM_ROLE_ID --project=PROJECT_ID \ --add-permissions="dataproc.batches.analyze"
Attiva la risoluzione dei problemi assistita da Gemini per Dataproc Serverless: attivi la risoluzione dei problemi assistita da Gemini per Dataproc Serverless quando invii ogni carico di lavoro batch Spark ricorrente utilizzando la console Google Cloud, l'interfaccia a riga di comando gcloud CLI o l'API Dataproc. Una volta attivata questa funzionalità in un carico di lavoro batch ricorrente, Dataproc immagazzina una copia dei log del carico di lavoro per 30 giorni e utilizza i dati dei log salvati per fornire la risoluzione dei problemi assistita da Gemini per il carico di lavoro. Per informazioni sui contenuti dei log del carico di lavoro Spark, consulta Log di Dataproc Serverless per Spark.
Console
Per attivare la risoluzione dei problemi assistita da Gemini su ogni workload batch Spark ricorrente:
Nella console Google Cloud, vai alla pagina Batch di Dataproc.
Per creare un workload batch, fai clic su Crea.
Nella sezione Contenitore, compila il nome della coorte, che identifica il batch come una di una serie di carichi di lavoro ricorrenti. L'analisi assistita da Gemini viene applicata al secondo carico di lavoro e ai carichi di lavoro successivi inviati con questo nome di coorte. Ad esempio, specifica
TPCH-Query1
come nome del gruppo per un carico di lavoro pianificato che esegue una query TPC-H giornaliera.Compila le altre sezioni della pagina Crea batch, se necessario, poi fai clic su Invia. Per ulteriori informazioni, consulta la sezione Inviare un carico di lavoro batch.
gcloud
Esegui il seguente comando dell'interfaccia a riga di comando gcloud
gcloud dataproc batches submit
in locale in una finestra del terminale o in Cloud Shell
per attivare la risoluzione dei problemi assistita da Gemini su ogni carico di lavoro batch Spark ricorrente:
gcloud dataproc batches submit COMMAND \ --region=REGION \ --cohort=COHORT \ other arguments ...
Sostituisci quanto segue:
- COMMAND: il tipo di carico di lavoro Spark, ad esempio
Spark
,PySpark
,Spark-Sql
oSpark-R
. - REGION: la regione in cui verrà eseguito il tuo carico di lavoro.
- COHORT: il nome della coorte, che
identifica il batch come una di una serie di carichi di lavoro ricorrenti.
L'analisi assistita da Gemini viene applicata al secondo carico di lavoro e ai carichi di lavoro successivi inviati con questo nome coorte. Ad esempio, specifica
TPCH Query 1
come nome del gruppo per un carico di lavoro pianificato che esegue una query TPC-H giornaliera.
API
Includi il nome RuntimeConfig.cohort
in una richiesta batches.create
per abilitare la risoluzione dei problemi assistita da Gemini su ogni carico di lavoro batch Spark ricorrente. L'analisi assistita da Gemini viene applicata al secondo e ai successivi carichi di lavoro inviati con questo nome coorte. Ad esempio, specifica TPCH-Query1
come nome della coorte per un carico di lavoro pianificato che esegue una query TPC-H giornaliera.
Esempio:
...
runtimeConfig:
cohort: TPCH-Query1
...
Risoluzione dei problemi con l'assistenza di Gemini per Dataproc Serverless
Le seguenti funzionalità di anteprima per la risoluzione dei problemi assistita da Gemini sono disponibili nelle pagine degli elenchi Dettagli batch e Batch nella console Google Cloud.
Scheda Investiga: la scheda Investiga nella pagina Dettagli batch fornisce una sezione Panoramica dell'integrità (anteprima) con i seguenti pannelli per la risoluzione dei problemi assistita da Gemini:
- Che cosa è stato ottimizzato automaticamente? Se hai attivato l'ottimizzazione automatica su uno o più carichi di lavoro, questo riquadro mostra le modifiche all'ottimizzazione automatica più recenti applicate ai carichi di lavoro in esecuzione, completati e non riusciti.
- Che cosa sta succedendo? e Che cosa posso fare? Fai clic su Chiedi a Gemini per richiedere consigli per correggere i carichi di lavoro non riusciti o migliorare quelli riusciti, ma lenti.
Se fai clic su Chiedi a Gemini, Gemini for Google Cloud genera un riepilogo di eventuali errori, anomalie o punti salienti dai log del carico di lavoro, dalle metriche Spark e dagli eventi Spark. Gemini per Google Cloud può anche mostrare un elenco di passaggi consigliati che puoi seguire per correggere un carico di lavoro non riuscito o migliorare le prestazioni di un carico di lavoro riuscito, ma lento.
Colonne per la risoluzione dei problemi con l'assistenza di Gemini: nell'ambito della release di anteprima, la pagina dell'elenco Batch di Dataproc nella console Google Cloud include le colonne
What was Autotuned
,What is happening now?
eWhat can I do about it?
.Il pulsante Chiedi a Gemini viene visualizzato e attivato solo se un batch completato è in uno stato
Failed
,Cancelled
oSucceeded
. Se fai clic su Chiedi a Gemini, Gemini per Google Cloud genera un riepilogo di eventuali errori, anomalie o punti salienti dai log del carico di lavoro, dalle metriche Spark e dagli eventi Spark. Gemini per Google Cloud può anche mostrare un elenco di passaggi consigliati che puoi seguire per correggere un carico di lavoro non riuscito o migliorare le prestazioni di un carico di lavoro riuscito, ma lento.
Punti salienti delle metriche batch
Nell'ambito della release di anteprima, la pagina Dettagli batch nella console Google Cloud include grafici che mostrano valori importanti delle metriche dei carichi di lavoro batch. I grafici delle metriche vengono compilati con i valori al termine del batch.
La tabella seguente elenca le metriche del carico di lavoro Spark visualizzate nella pagina Dettagli batch della console Google Cloud e descrive in che modo i valori delle metriche possono fornire informazioni sullo stato e sulle prestazioni del carico di lavoro.
Metrica | Cosa mostra? |
---|---|
Metriche a livello di esecutore | |
Rapporto tra tempo GC della JVM e tempo di esecuzione | Questa metrica mostra il rapporto tra il tempo di GC (garbage collection) della JVM e il tempo di esecuzione per executor. Rapporti elevati possono indicare perdite di memoria all'interno di attività in esecuzione su determinati executor o strutture di dati inefficienti, il che può portare a un elevato tasso di rotazione degli oggetti. |
Byte con overflow su disco | Questa metrica mostra il numero totale di byte di disco sparsi su diversi executor. Se un executor mostra un numero elevato di byte spillati sul disco, questo può indicare uno squilibrio dei dati. Se la metrica aumenta nel tempo, può indicare che ci sono fasi con utilizzo elevato della memoria o perdite di memoria. |
Byte letti e scritti | Questa metrica mostra i byte scritti rispetto ai byte letti per executor. Grandi discrepanze nei byte letti o scritti possono indicare scenari in cui le unioni replicate portano all'amplificazione dei dati su esecutori specifici. |
Record letti e scritti | Questa metrica mostra i record letti e scritti per ciascun executor. Un numero elevato di record letti con un numero ridotto di record scritti può indicare un collo di bottiglia nella logica di elaborazione su esecutori specifici, con conseguente lettura dei record in attesa. Gli esecutori che presentano costantemente un ritardo nelle letture e nelle scritture possono indicare una contesa delle risorse su questi nodi o inefficienze del codice specifiche dell'esecutore. |
Rapporto tra tempo di scrittura casuale e tempo di esecuzione | La metrica mostra il tempo impiegato dall'executor in fase di runtime dell'ordinamento casuale rispetto al runtime complessivo. Se questo valore è elevato per alcuni esecutori, può indicare uno scostamento dei dati o una serializzazione inefficiente dei dati. Puoi identificare le fasi con tempi di scrittura di ordinamento casuale lunghi nell'interfaccia utente di Spark. Cerca le attività outlier all'interno di queste fasi che richiedono più tempo del normale per essere completate. Verifica se gli esecutori con tempi di scrittura con mescolamento elevati mostrano anche un'attività di I/O del disco elevata. Potrebbero essere utili una serializzazione più efficiente e passaggi di partizionamento aggiuntivi. Scritture di record molto grandi rispetto alle letture dei record possono indicare una duplicazione non intenzionale dei dati a causa di unioni inefficienti o trasformazioni errate. |
Metriche a livello di applicazione | |
Progressione delle fasi | Questa metrica mostra il numero di fasi non riuscite, in attesa e in esecuzione. Un numero elevato di fasi non riuscite o in attesa può indicare uno squilibrio dei dati. Controlla la presenza di partizioni di dati e debugga il motivo dell'errore della fase utilizzando la scheda Fasi nell'interfaccia utente di Spark. |
Esecutori Spark batch | Questa metrica mostra il numero di esecutori che potrebbero essere necessari rispetto al numero di esecutori in esecuzione. Una differenza significativa tra gli esecutori richiesti e quelli in esecuzione può indicare problemi di scalabilità automatica. |
Metriche a livello di VM | |
Memoria utilizzata | Questa metrica mostra la percentuale di memoria VM in uso. Se la percentuale principale è elevata, può indicare che il driver è sotto pressione di memoria. Per altri nodi VM, una percentuale elevata può indicare che gli executor stanno esaurendo la memoria, il che può portare a un elevato spreco di spazio su disco e a un tempo di esecuzione del carico di lavoro più lento. Utilizza l'interfaccia utente di Spark per analizzare gli esecutori e verificare la presenza di tempi di GC e errori di attività elevati. Esegui anche il debug del codice Spark per la memorizzazione nella cache di set di dati di grandi dimensioni e la trasmissione non necessaria delle variabili. |
Log job
Nell'ambito della release di anteprima, la pagina Dettagli batch nella console Google Cloud elenca i log dei job (carichi di lavoro batch). I log includono avvisi ed errori filtrati dall'output del carico di lavoro e dai log di Spark. Puoi selezionare la gravità dei log, aggiungere un filtro e fare clic sull'icona Visualizza in Esplora log per aprire i log batch selezionati in Esplora log.
Esempio: Esplora log si apre dopo aver scelto Errors
dal selettore Grave nella pagina Dettagli batch della console Google Cloud.