Monitora e risolvi i problemi dei carichi di lavoro serverless di Dataproc

Puoi monitorare e risolvere i problemi di Dataproc Serverless per i carichi di lavoro batch di Spark utilizzando le informazioni e gli strumenti descritti nelle sezioni seguenti.

Server di cronologia permanente

Dataproc Serverless per Spark crea le risorse di calcolo necessarie per eseguire un carico di lavoro, esegue il carico di lavoro su queste risorse, quindi elimina le risorse al termine del carico di lavoro. Le metriche e gli eventi del carico di lavoro non vengono mantenuti al termine del carico di lavoro. Tuttavia, puoi utilizzare un server di cronologia permanente (PHS) per conservare la cronologia delle applicazioni del carico di lavoro (log eventi) in Cloud Storage.

Per utilizzare un PHS con un carico di lavoro batch, segui questi passaggi:

  1. Crea un server di cronologia permanente (PHS) di Dataproc.

  2. Specifica il tuo PHS quando invii un carico di lavoro.

  3. Utilizza il gateway dei componenti per connetterti al PHS e visualizzare i dettagli dell'applicazione, le fasi dello scheduler, i dettagli a livello di attività, nonché le informazioni sull'ambiente e sugli esecutori.

Dataproc serverless per i log Spark

Il logging è abilitato per impostazione predefinita in Dataproc Serverless per Spark e i log dei carichi di lavoro vengono conservati al termine del carico di lavoro. Dataproc Serverless per Spark raccoglie i log dei carichi di lavoro in Cloud Logging. Puoi accedere ai log del carico di lavoro spark, agent, output e container nella risorsa Cloud Dataproc Batch in Esplora log.

Esempio di Dataproc Serverless per batch Spark:

Esempio di selezione in batch in Metrics Explorer.

Per maggiori informazioni, consulta Log di Dataproc.

Audit log di Dataproc serverless

Per informazioni sugli audit log di Dataproc Serverless, consulta Audit log di Dataproc.

Metriche del carico di lavoro

Per impostazione predefinita, Dataproc Serverless per Spark consente la raccolta delle metriche Spark disponibili, a meno che non utilizzi le proprietà di raccolta delle metriche Spark per disabilitare o eseguire l'override della raccolta di una o più metriche Spark.

Puoi visualizzare le metriche del carico di lavoro in Esplora metriche o nella pagina Dettagli batch della console Google Cloud.

Metriche batch

Le metriche delle risorse Dataproc batch forniscono insight sulle risorse batch, ad esempio il numero di esecutori batch. Le metriche batch hanno il prefisso dataproc.googleapis.com/batch.

Esempio di metrica batch in Metrics Explorer.

Metriche Spark

Le metriche Spark disponibili includono quelle relative a driver ed esecutore Spark, nonché a metriche di sistema. Le metriche Spark disponibili hanno il prefisso custom.googleapis.com/.

Esempio di metrica Spark in Metrics Explorer.

Configura avvisi relativi alle metriche

Puoi creare avvisi sulle metriche Dataproc per ricevere notifiche sui problemi dei carichi di lavoro.

Creare grafici

Puoi creare grafici che visualizzano le metriche del carico di lavoro utilizzando Esplora metriche nella console Google Cloud. Ad esempio, puoi creare un grafico per visualizzare disk:bytes_used e filtrare per batch_id.

Cloud Monitoring

Monitoring usa i metadati e le metriche dei carichi di lavoro per fornire insight su integrità e prestazioni di Dataproc Serverless per carichi di lavoro Spark. Le metriche del carico di lavoro includono le metriche Spark, le metriche batch e le metriche per le operazioni.

Puoi utilizzare Cloud Monitoring nella console Google Cloud per esplorare le metriche, aggiungere grafici, creare dashboard e creare avvisi.

Creazione di dashboard

Puoi creare una dashboard per monitorare i carichi di lavoro utilizzando le metriche di più progetti e diversi prodotti Google Cloud. Per maggiori informazioni, consulta Creare e gestire le dashboard personalizzate.

Risoluzione dei problemi avanzata (anteprima)

Questa sezione illustra le funzionalità avanzate per la risoluzione dei problemi (Anteprima) disponibili nella console Google Cloud. Queste funzionalità includono la risoluzione dei problemi assistita da 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à avanzate di risoluzione dei problemi, compila e invia il modulo di registrazione pre-GA di Gemini in BigQuery. Una volta approvato il modulo, i progetti elencati nel modulo avranno accesso alle funzionalità in anteprima.

Anteprima dei prezzi

Non sono previsti costi aggiuntivi per la partecipazione all'anteprima. Gli addebiti verranno applicati alle seguenti funzionalità in anteprima non appena diventeranno in disponibilità generale (GA):

Un preavviso sugli addebiti GA verrà inviato all'indirizzo email fornito nel modulo di registrazione di anteprima.

Requisiti delle funzionalità

  • Registrazione: devi registrarti per utilizzare la funzionalità.

  • Autorizzazione: devi disporre dell'autorizzazione dataproc.batches.analyze.

    gcloud iam roles update CUSTOM_ROLE_ID --project=PROJECT_ID \
    --add-permissions="dataproc.batches.analyze"
    
  • Abilita la risoluzione dei problemi assistita da Gemini per Dataproc Serverless: puoi abilitare la risoluzione dei problemi assistita da Gemini per Dataproc Serverless quando invii ogni carico di lavoro batch Spark ricorrente utilizzando la console Google Cloud, gcloud CLI o l'API Dataproc. Una volta abilitata questa funzionalità su un carico di lavoro batch ricorrente, Dataproc archivia una copia dei log del carico di lavoro per 30 giorni e utilizza i dati di log salvati per fornire la risoluzione dei problemi assistita da Gemini per il carico di lavoro. Per informazioni sui contenuti dei log dei carichi di lavoro Spark, consulta Dataproc Serverless per i log Spark.

Console

Completa i seguenti passaggi per abilitare la risoluzione dei problemi assistita da Gemini su ogni carico di lavoro batch Spark ricorrente:

  1. Nella console Google Cloud, vai alla pagina Batch di Dataproc.

    Vai alla pagina Batch di Dataproc

  2. Per creare un carico di lavoro batch, fai clic su Crea.

  3. Nella sezione Container, inserisci il nome Coorte, che identifica il batch come uno di una serie di carichi di lavoro ricorrenti. L'analisi assistita da Gemini viene applicata al secondo carico di lavoro e a quelli successivi inviati con il nome della coorte. Ad esempio, specifica TPCH-Query1 come nome della coorte per un carico di lavoro pianificato che esegue una query TPC-H giornaliera.

  4. Compila le altre sezioni della pagina Crea batch in base alle tue esigenze, quindi fai clic su Invia. Per maggiori informazioni, consulta Inviare un carico di lavoro batch.

gcloud

Esegui il seguente comando gcloud CLI gcloud dataproc batches submit in locale in una finestra del terminale o in Cloud Shell per abilitare 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 o Spark-R.
  • REGION: la regione in cui verrà eseguito il carico di lavoro.
  • COHORT: il nome della coorte, che identifica il batch come uno di una serie di carichi di lavoro ricorrenti. L'analisi assistita da Gemini viene applicata al secondo carico di lavoro e a quelli successivi inviati con il nome di questa coorte. Ad esempio, specifica TPCH Query 1 come nome della coorte 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 carico di lavoro e a quelli successivi inviati con il nome di questa 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 assistita da Gemini per Dataproc Serverless

Le seguenti funzionalità di anteprima della risoluzione dei problemi assistite da Gemini sono disponibili nelle pagine Dettagli dei batch e Batch della console Google Cloud.

  • Scheda Esamina: la scheda Indaga nella pagina Dettagli batch fornisce una sezione Panoramica dell'integrità (anteprima) con i seguenti riquadri per la risoluzione dei problemi assistiti da Gemini:

    • Che cosa è stato ottimizzato automaticamente? Se hai abilitato l'ottimizzazione automatica su uno o più carichi di lavoro, questo riquadro mostra le modifiche di ottimizzazione automatica più recenti applicate ai carichi di lavoro in esecuzione, completati e non riusciti.

    Riquadro di indagine per l'ottimizzazione automatica.

    • Che cosa sta succedendo ora? e Che cosa posso fare al riguardo? Fai clic su Chiedi a Gemini per richiedere suggerimenti che ti aiutino a correggere i carichi di lavoro non riusciti o a migliorare quelli riusciti ma lenti.

    Pulsante Chiedi a Gemini.

    Se fai clic su Chiedi a Gemini, Gemini per Google Cloud genera un riepilogo di eventuali errori, anomalie o evidenziazioni dai log dei carichi di lavoro, dalle metriche Spark e dagli eventi Spark. Gemini per Google Cloud può anche visualizzare un elenco di passaggi consigliati per correggere un carico di lavoro non riuscito o migliorare le prestazioni di un carico di lavoro riuscito ma lento.

    Insight generati da Gemini per Google Cloud.

  • Colonne per la risoluzione dei problemi assistite da 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? e What can I do about it?.

    I batch elencano le colonne Gemini.

    Il pulsante Chiedi a Gemini viene visualizzato e abilitato solo se un batch completato è in stato Failed, Cancelled o Succeeded. Se fai clic su Chiedi a Gemini, Gemini per Google Cloud genera un riepilogo di eventuali errori, anomalie o evidenziazioni dai log dei carichi di lavoro, dalle metriche Spark e dagli eventi Spark. Gemini per Google Cloud può anche visualizzare un elenco di passaggi consigliati per correggere un carico di lavoro non riuscito o migliorare le prestazioni di un carico di lavoro riuscito ma lento.

Caratteristiche principali delle metriche batch

Nell'ambito della versione di anteprima, la pagina Dettagli batch della console Google Cloud include grafici che visualizzano i valori importanti delle metriche dei carichi di lavoro batch. I grafici delle metriche vengono compilati con valori al termine del batch.

Dashboard delle metriche batch.

Tabella delle metriche

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 insight sullo stato e sulle prestazioni del carico di lavoro.

Metrica Che cosa viene visualizzato?
Metriche a livello di esecutore
Rapporto tra tempo di runtime di JVM GC Questa metrica mostra il rapporto tra tempo di GC (garbage collection) JVM e runtime per esecutore. Rapporti elevati possono indicare perdite di memoria all'interno di attività in esecuzione su particolari esecutori o strutture di dati inefficienti, il che può portare a un elevato tasso di abbandono degli oggetti.
Byte disco versati Questa metrica mostra il numero totale di byte del disco distribuiti tra i diversi esecutori. Se un esecutore mostra un numero elevato di byte del disco sversati, ciò può indicare un disallineamento dei dati. Se la metrica aumenta nel tempo, ciò può indicare la presenza di fasi con pressione della memoria o perdite di memoria.
Byte letti e scritti Questa metrica mostra i byte scritti rispetto ai byte letti per esecutore. Grandi discrepanze nei byte letti o scritti possono indicare scenari in cui i join replicati portano all’amplificazione dei dati su esecutori specifici.
Record letti e scritti Questa metrica mostra i record letti e scritti per esecutore. 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, che porta alla lettura dei record in attesa. Gli esecutori con un ritardo costante nelle operazioni di lettura e scrittura possono indicare un conflitto di risorse su quei nodi o inefficienze del codice specifiche degli esecutori.
Rapporto tra tempo di scrittura casuale e tempo di esecuzione La metrica mostra la quantità di tempo trascorsa dall'esecutore nel runtime di shuffling rispetto al tempo di esecuzione complessivo. Se questo valore è alto per alcuni esecutori, può indicare un disallineamento dei dati o una serializzazione dei dati inefficiente. Nella UI di Spark puoi identificare le fasi con lunghi tempi di scrittura shuffling. Cerca le attività anomale in queste fasi che richiedono più tempo del tempo medio per il completamento. Controlla se gli esecutori con tempi di scrittura shuffle elevati mostrano anche un'attività di I/O su disco elevata. Una serializzazione più efficiente e ulteriori passaggi di partizionamento potrebbero essere d'aiuto. Scritture di record molto grandi rispetto alle letture dei record possono indicare una duplicazione involontaria di dati a causa di join inefficienti o trasformazioni errate.
Metriche a livello di applicazione
Progressione fasi Questa metrica mostra il numero di fasi nelle fasi non riuscite, in attesa e in esecuzione. Un numero elevato di fasi con errori o in attesa può indicare un disallineamento dei dati. Verifica le partizioni dei dati ed esegui il debug del motivo dell'errore della fase utilizzando la scheda Fasi nella UI di Spark.
Esecutori Spark batch Questa metrica mostra il numero di esecutori che potrebbero essere richiesti rispetto al numero di esecutori in esecuzione. Una grande differenza tra gli esecutori obbligatori e 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 master è elevata, è possibile che la memoria del driver sia ridotta. Per altri nodi VM, una percentuale elevata può indicare che gli esecutori stanno esaurendo la memoria, il che può portare a un'elevata fuoriuscita del disco e a un runtime più lento del carico di lavoro. Utilizza l'interfaccia utente di Spark per analizzare gli esecutori e verificare la presenza di tempi di GC elevati e di errori elevati delle attività. Esegui il debug del codice Spark anche per la memorizzazione nella cache di set di dati di grandi dimensioni e la trasmissione non necessaria di variabili.

Log job

Nell'ambito della versione di anteprima, la pagina Dettagli batch nella console Google Cloud elenca i log dei job (carico di lavoro batch). I log includono avvisi ed errori filtrati dall'output dei carichi di lavoro e dai log di Spark. Puoi selezionare Gravità del log, aggiungere un filtro,quindi 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 di gravità nella pagina Dettagli batch della console Google Cloud.

Esplora log batch.

UI Spark (anteprima)

Se hai registrato il progetto nella funzionalità di anteprima dell'UI di Spark, puoi visualizzare la UI di Spark nella console Google Cloud senza dover creare un cluster Dataproc PHS (server di cronologia permanente). La UI di Spark raccoglie i dettagli di esecuzione di Spark dai carichi di lavoro batch. Per ulteriori informazioni, consulta la guida dell'utente distribuita ai clienti registrati come parte della release di anteprima dell'interfaccia utente di Spark.