Condividi tramite


Ottimizzare l'utilizzo del cluster delle pipeline dichiarative di Spark Lakeflow con autoscalabilità.

Questo articolo illustra come usare la scalabilità automatica avanzata per ottimizzare le pipeline in Azure Databricks.

La scalabilità automatica avanzata è abilitata per impostazione predefinita per tutte le nuove pipeline. Le pipeline serverless usano anche la scalabilità automatica verticale. Vedere Che cos'è la scalabilità automatica verticale?.

Per le pipeline serverless, la scalabilità automatica avanzata è sempre attiva e non può essere disabilitata. Consulta Configurare una pipeline serverless.

Che cos'è la scalabilità automatica avanzata?

La scalabilità automatica avanzata di Databricks ottimizza l'utilizzo del cluster assegnando automaticamente le risorse del cluster in base al volume del carico di lavoro, con un impatto minimo sulla latenza di elaborazione dati delle pipeline.

La scalabilità automatica migliorata migliora la funzionalità di scalabilità automatica del cluster Azure Databricks con le funzionalità seguenti:

  • La scalabilità automatica avanzata implementa l'ottimizzazione dei carichi di lavoro di streaming e aggiunge miglioramenti per migliorare le prestazioni dei carichi di lavoro batch. La scalabilità automatica migliorata ottimizza i costi aggiungendo o rimuovendo i computer man mano che cambia il carico di lavoro.
  • La scalabilità automatica avanzata arresta in modo proattivo i nodi sottoutilizzati, garantendo al contempo che non ci siano attività non riuscite durante l'arresto. La funzionalità di scalabilità automatica del cluster esistente riduce i nodi solo se il nodo è inattivo.

La scalabilità automatica avanzata è la modalità di scalabilità automatica predefinita quando si crea una nuova pipeline nell'interfaccia utente delle pipeline. È possibile abilitare la scalabilità automatica avanzata per le pipeline esistenti modificando le impostazioni della pipeline nell'interfaccia utente. È anche possibile abilitare la scalabilità automatica avanzata quando si creano o si modificano pipeline con l'API REST delle pipeline.

Quali metriche usano la scalabilità automatica avanzata per prendere una decisione di aumento o riduzione delle prestazioni?

La scalabilità automatica avanzata usa due metriche per decidere di aumentare o ridurre le prestazioni:

  • Utilizzo degli slot di attività: si tratta del rapporto medio tra il numero di slot di attività occupati e il numero totale di slot di attività disponibili nel cluster.
  • Dimensione della coda di attività: numero di attività in attesa di essere eseguite negli slot delle attività.

Abilitare la scalabilità automatica avanzata per una pipeline

La scalabilità automatica avanzata è la modalità di scalabilità automatica predefinita quando si crea una nuova pipeline nell'interfaccia utente delle pipeline. È possibile abilitare la scalabilità automatica avanzata per le pipeline esistenti modificando le impostazioni della pipeline nell'interfaccia utente. È anche possibile abilitare la scalabilità automatica avanzata quando si modifica una pipeline con l'editor delle pipeline di Lakeflow.

Per usare la scalabilità automatica avanzata, eseguire una delle operazioni seguenti:

  • Impostare Modalità cluster su Scalabilità automatica migliorata durante la modifica delle impostazioni della pipeline nell'editor delle pipeline di Lakeflow.
  • Aggiungere l'impostazione autoscale alla configurazione del cluster della pipeline e impostare il campo mode su ENHANCED. Vedere Configurare il calcolo classico per le pipeline.

Usare le linee guida seguenti per la configurazione della scalabilità automatica avanzata per le pipeline di produzione:

  • Lasciare l'impostazione Min workers predefinita.
  • Impostare l'impostazione Max workers su un valore basato sulla priorità del budget e della pipeline.

L'esempio seguente configura un cluster con scalabilità automatica avanzata con almeno 5 ruoli di lavoro e un massimo di 10 ruoli di lavoro. max_workers deve essere maggiore o uguale a min_workers.

Annotazioni

  • La scalabilità automatica avanzata è disponibile solo per updates i cluster. La scalabilità automatica legacy viene usata per maintenance cluster.
  • La autoscale configurazione ha due modalità:
{
  "clusters": [
    {
      "autoscale": {
        "min_workers": 5,
        "max_workers": 10,
        "mode": "ENHANCED"
      }
    }
  ]
}

Se la pipeline è configurata per l'esecuzione continua, viene riavviata automaticamente dopo la modifica della configurazione della scalabilità automatica. Dopo il riavvio, prevedere un breve periodo di aumento della latenza. Dopo questo breve periodo di maggiore latenza, le dimensioni del cluster dovrebbero essere aggiornate basandosi sulla tua configurazione autoscale, e la latenza della pipeline dovrebbe tornare alle sue caratteristiche di latenza precedenti.

Limitare i costi per le pipeline che usano la scalabilità automatica avanzata

Annotazioni

Non è possibile configurare i ruoli di lavoro per le pipeline serverless.

L'impostazione del parametro Max workers nel riquadro Compute delle pipeline imposta un limite superiore per l'autoscalamento. La riduzione del numero di lavoratori disponibili potrebbe aumentare la latenza per alcuni carichi di lavoro, ma impedisce il rapido aumento dei costi delle risorse di calcolo durante le operazioni ad alta intensità di calcolo.

Databricks consiglia di ottimizzare le impostazioni Max worker per bilanciare il compromesso tra costi e latenza per le esigenze specifiche.

pannello Calcolo nell'interfaccia utente di Pipelines, in cui è possibile impostare il numero massimo di lavoratori per la scalabilità automatica

Monitorare le pipeline classiche abilitate per la scalabilità automatica avanzata

È possibile usare il log eventi nell'interfaccia utente della pipeline per monitorare le metriche di scalabilità automatica avanzate per le pipeline classiche. Gli eventi di scalabilità automatica migliorati hanno il autoscale tipo di evento. Di seguito sono riportati gli eventi di esempio:

Event Message
Richiesta di ridimensionamento del cluster avviata Scaling [up or down] to <y> executors from current cluster size of <x>
Richiesta di ridimensionamento del cluster completata Achieved cluster size <x> for cluster <cluster-id> with status SUCCEEDED
Richiesta di ridimensionamento del cluster parzialmente completata Achieved cluster size <x> for cluster <cluster-id> with status PARTIALLY_SUCCEEDED
Richiesta di ridimensionamento del cluster non riuscita Achieved cluster size <x> for cluster <cluster-id> with status FAILED

È anche possibile visualizzare eventi di scalabilità automatica avanzati eseguendo direttamente una query sul registro eventi:

Che cos'è la scalabilità automatica verticale?

Le pipeline serverless aggiungono alla scalabilità automatica orizzontale fornita da Databricks la scalabilità automatica avanzata allocando automaticamente i tipi di istanza più convenienti che possono eseguire la pipeline senza errori a causa di errori di memoria insufficiente. La scalabilità automatica verticale aumenta quando sono necessari tipi di istanza più grandi per eseguire un aggiornamento della pipeline e diminuisce quando determina che l'aggiornamento può essere eseguito con tipi di istanza più piccoli. La scalabilità automatica verticale determina se i nodi driver, i nodi di lavoro o i nodi driver e di lavoro devono essere ridimensionati verso l'alto o verso il basso.

La scalabilità automatica verticale viene utilizzata per tutte le pipeline serverless, incluse le pipeline utilizzate da viste materializzate SQL e tabelle di streaming di Databricks.

La scalabilità automatica verticale funziona rilevando gli aggiornamenti della pipeline non riusciti a causa di errori di memoria insufficiente. La scalabilità automatica verticale alloca tipi di istanza più grandi quando questi errori vengono rilevati in base ai dati di memoria insufficiente raccolti dall'aggiornamento non riuscito. In modalità di produzione viene avviato automaticamente un nuovo aggiornamento che usa le nuove risorse di calcolo. In modalità di sviluppo, le nuove risorse di calcolo vengono usate quando si avvia manualmente un nuovo aggiornamento.

Se la scalabilità automatica verticale rileva che la memoria delle istanze allocate è costantemente sottoutilizzata, riduce i tipi di istanza da usare nell'aggiornamento successivo della pipeline.