Risolvere i problemi relativi agli elementi in ritardo nei job batch

Gli straggler sono elementi di lavoro che rallentano i job Dataflow impedendo l'esecuzione contemporanea del lavoro.

Per le pipeline batch, un elemento in ritardo viene definito come un elemento di lavoro con le seguenti caratteristiche:

  • Il completamento dell'operazione richiede molto più tempo rispetto ad altri elementi di lavoro nella stessa fase.
  • Riduce il parallelismo all'interno dello stage.
  • Impedisce l'avvio di nuove attività.

Nel peggiore dei casi, un elemento in ritardo blocca il completamento di una fase perché è in corso una piccola percentuale del lavoro, causando ritardi complessivi in un job.

Dataflow rileva gli elementi in ritardo che si verificano durante i job batch. Se Dataflow rileva un elemento in ritardo, tenta anche di determinarne la causa.

Visualizza gli elementi in ritardo nella console Google Cloud

Dopo aver avviato un job Dataflow, puoi utilizzare la console Google Cloud per visualizzare eventuali elementi in ritardo rilevati.

Puoi visualizzare gli elementi in ritardo per fase o per worker. Utilizza queste viste per trovare le fasi con elementi in ritardo, quindi individua i worker in cui si sono verificati gli elementi in ritardo in ogni fase.

Visualizza gli elementi in ritardo per fase

Per visualizzare gli elementi in ritardo per fase:

  1. Nella console Google Cloud, vai alla pagina Job di Dataflow.

    Vai a Job

  2. Fai clic sul nome del job.

  3. Nella pagina dei dettagli del job, fai clic sulla scheda Dettagli esecuzione.

  4. Nell'elenco Visualizzazione grafico, seleziona Avanzamento fase. Il grafico di avanzamento mostra i conteggi aggregati di tutti gli elementi in ritardo rilevati in ogni fase.

  5. Per visualizzare i dettagli di una fase, tieni il puntatore del mouse sulla barra di una fase. Per visualizzare i worker per la fase, fai clic su Visualizza worker nel riquadro dei dettagli.

Visualizza gli elementi in ritardo per worker

Per visualizzare gli elementi in ritardo per worker:

  1. Nella console Google Cloud, vai alla pagina Job di Dataflow.

    Vai a Job

  2. Fai clic sul nome del job.

  3. Nella pagina dei dettagli del job, fai clic sulla scheda Dettagli esecuzione.

  4. Nell'elenco Visualizzazione grafico, seleziona Avanzamento worker.

  5. Nell'elenco Filtra i worker per fase, seleziona la fase. Il grafico di avanzamento mostra eventuali elementi in ritardo rilevati per quella fase. La barra presenta un'ombreggiatura più scura nel punto in cui l'elemento in ritardo è stato rilevato.

  6. Per visualizzare i dettagli di un lavoratore, tieni il puntatore sulla barra del lavoratore.

Nel riquadro Informazioni fase, la sezione Dettagli elemento in ritardo elenca gli elementi in ritardo per tutti i worker mostrati nella pagina, con le seguenti informazioni:

  • L'ora di inizio in cui è stato rilevato l'elemento in ritardo.
  • Il lavoratore che ha subito il ritardo.
  • La causa, se nota.

Risolvere i problemi relativi agli elementi in ritardo del batch

Dataflow rileva le seguenti cause degli elementi in ritardo nelle pipeline in modalità batch:

  • Tasto di scelta rapida. Un tasto di scelta rapida è una chiave che rappresenta molti più elementi rispetto agli altri tasti nello stesso PCollection. Per maggiori informazioni, consulta Risolvere i problemi relativi agli elementi in ritardo causati dai tasti di scelta rapida in questo documento.

  • Lavoratore lento. Con un lavoratore lento, gli elementi di lavoro sono più lenti del solito. Spesso, la velocità di elaborazione di un worker lento è inferiore a quella dei lavoratori che svolgono un lavoro simile nella stessa fase. La lentezza dei worker può essere causata da molti fattori, tra cui l'esaurimento delle CPU, il thrashing, l'architettura delle macchine e i processi dei worker bloccati. In caso di lentezza, Dataflow tenta di mitigare automaticamente il problema. Per maggiori informazioni, consulta Mitigare automaticamente gli elementi in ritardo causati dai worker lenti in questo documento.

  • Causa indeterminata. Per gli elementi in ritardo con causa indeterminata, consulta la procedura generale per la risoluzione dei problemi relativi ai job batch lenti in "Risolvere i problemi dei job lenti o bloccati".

Risolvere i problemi relativi agli elementi in ritardo causati dai tasti di scelta rapida

Vari fattori possono causare elementi in ritardo, ma una causa comune è l'esistenza di un tasto di scelta rapida. Una chiave di scelta rapida è una chiave che rappresenta molti più elementi rispetto alle altre chiavi nello stesso PCollection. Le chiavi di accesso rapido possono creare elementi in ritardo perché limitano la capacità di Dataflow di elaborare gli elementi in parallelo.

Se Dataflow rileva un elemento in ritardo causato da un tasto di scelta rapida, nel riquadro Dettagli elemento pubblicitario in ritardo la causa è Hot Key.

Per impostazione predefinita, Dataflow non visualizza il valore della chiave della chiave di scelta rapida. Per visualizzare la coppia chiave-valore, imposta l'opzione della pipeline hotKeyLoggingEnabled su true quando esegui il job.

Per risolvere questo problema, verifica che i dati siano distribuiti uniformemente. Se una chiave ha molti valori sproporzionatamente, prendi in considerazione le seguenti azioni:

Ad esempio, se una pipeline esegue un'operazione JOIN nell'ambito di una trasformazione SQL, è probabile che una determinata chiave contenga una quantità sproporzionata di dati quando viene inviata alla GroupByKey, eseguita nell'ambito dell'operazione JOIN espansa.

Per ulteriori informazioni, consulta la seguente richiesta di funzionalità: beam-issue/28186.

Mitiga automaticamente gli elementi in ritardo causati dai worker lenti

I worker lenti non sono comuni su Dataflow, ma possono influire sulle prestazioni del job. Per evitare problemi di prestazioni, quando Dataflow rileva worker lenti, tenta di mitigare il problema prima che i worker causino elementi in ritardo.

La mitigazione automatica simula un evento di manutenzione dell'host. L'evento è un meccanismo di manutenzione di Compute Engine che si verifica regolarmente. A seconda del criterio di manutenzione dell'host del worker, quest'ultimo viene migrato o riavviato dal vivo. Se si verifica una migrazione live, il carico di lavoro non viene interrotto. Se il worker viene riavviato, il lavoro in corso del worker lento andrà perso e l'elaborazione si riavvia.

Se un worker lento viene rilevato e mitigato correttamente, nei log di job-message viene visualizzato il seguente messaggio:

Slow worker ... detected and automatically remediated ...

Poiché i worker lenti non sono in ritardo, non è necessario alcun intervento da parte tua.

Se la mitigazione non riesce, il worker lento causa un elemento in ritardo visualizzato nell'interfaccia di monitoraggio di Dataflow.

La mitigazione automatica potrebbe non riuscire se il progetto esaurisce la quota per l'istanza di simulazione di richieste di eventi di manutenzione. Per ulteriori informazioni sulla quota predefinita, consulta Limiti di frequenza delle API per le metriche regionali in "Quote di utilizzo delle risorse e gestione delle autorizzazioni". Per richiedere un limite di quota superiore, consulta Richiedere un limite di quota più alto in "Visualizzare e gestire le quote".

Passaggi successivi