Monitorare e risolvere i problemi dei carichi di lavoro batch Dataproc Serverless

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 ruolo Dataproc 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'autorizzazione dataproc.batches.sparkApplicationWrite a quell'account di servizio (in genere, concedendo all'account di servizio il ruolo Dataproc Worker).

  • 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 ruoli Dataproc Viewer, Dataproc Editor e Dataproc 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.

  1. Vai alla pagina Sessioni interattive Dataproc Serverless.

    Vai alla pagina Batch di Dataproc

  2. Fai clic su un ID batch per aprire la pagina dei dettagli del batch.

  3. Fai clic su Visualizza interfaccia utente di Spark nel menu in alto.

Il pulsante Visualizza interfaccia utente di Spark è disattivato nei seguenti casi:

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:

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

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

  3. 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:

  1. Vai a Esplora log

  2. Il progetto corrente è selezionato. Puoi fare clic su Perfeziona ambito progetto per selezionare un altro progetto.
  3. Definisci una query sui log batch.

    • Utilizza i menu dei filtri per filtrare in base a un carico di lavoro batch.

      1. In Tutte le risorse, seleziona la risorsa Cloud Dataproc Batch.

        1. 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.

        2. Fai clic su Applica.

        3. 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.

      1. Specifica il tipo di risorsa e il nome della risorsa VM come mostrato nell'esempio seguente:

        resource.type="cloud_dataproc_batch"
        labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
        
        Note:

        • 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:

  4. 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.

  1. 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 namespace output e imposta il nome file su JOB_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"
    

  2. dataproc.googleapis.com/spark: lo spazio dei nomi spark 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 componente master, worker o executor 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"
    

  3. dataproc.googleapis.com/startup: lo spazio dei nomi startup include i log di avvio del batch (cluster). Sono inclusi eventuali log dello script di inizializzazione. I componenti sono identificati dall'etichetta, ad esempio:

    startup-script[855]: ... activate-component-spark[3050]: ... enable spark-worker
    
    Query di esempio di Esplora log per i log di avvio su una VM specificata:
    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"
    
  4. dataproc.googleapis.com/agent: lo spazio dei nomi agent 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#"
    

  5. dataproc.googleapis.com/autoscaler: lo spazio dei nomi autoscaler 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.

Esempio di metrica batch in Metrics Explorer.

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/.

Esempio di metrica Spark in Metrics Explorer.

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):

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.

    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:

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

    Vai alla pagina Batch di Dataproc

  2. Per creare un workload batch, fai clic su Crea.

  3. 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.

  4. 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 o Spark-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.

    Riquadro di indagine sull'ottimizzazione automatica.

    • 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.

    Pulsante Chiedi a Gemini.

    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.

    Approfondimenti generati da Gemini for Google Cloud.

  • 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? e What can I do about it?.

    I batch elencano le colonne Gemini.

    Il pulsante Chiedi a Gemini viene visualizzato e attivato solo se un batch completato è in uno stato Failed, Cancelled o Succeeded. 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.

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 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.

Esplora log batch.