Scalabilità orizzontale per le app Databricks

Importante

Questa funzionalità è in versione beta. Per richiedere l'accesso, contattare il rappresentante Azure Databricks. Dopo aver abilitato la funzionalità, gli amministratori dell'area di lavoro possono controllare l'accesso dalla pagina Anteprime . Vedere Gestire le anteprime di Azure Databricks.

Questa pagina descrive come eseguire un'app Databricks su più istanze dietro un unico URL dell'app per una maggiore disponibilità e simultaneità.

La scalabilità orizzontale distribuisce le richieste tra istanze, quindi un singolo errore o un riavvio dell'istanza non porta l'app offline. Il costo di calcolo scala linearmente con il numero di istanze.

Altri vantaggi includono:

  • Affinità di sessione: ogni richiesta dello stesso utente viene instradata alla stessa istanza, nei limiti del possibile, in modo che un'app possa conservare su tale istanza dati temporanei per utente (ad esempio una cache in memoria). Noto anche come sticky sessions. Vedere Affinità di sessione.
  • Distribuzioni con tempo di inattivitàzero: Azure Databricks esegue prima una nuova distribuzione in un'istanza di compilazione e aggiorna solo le istanze rimanenti dopo che l'istanza di compilazione ha esito positivo. Le istanze esistenti continuano a gestire il traffico per tutto il tempo.
  • Cache di compilazione stabili: Azure Databricks conserva gli artefatti di distribuzione tra gli aggiornamenti delle risorse di calcolo (ad esempio, quando si cambia la dimensione o il numero di istanze), quindi l'app non richiede una ricompilazione completa.

Requirements

I requisiti seguenti si applicano a tutte le app con scalabilità orizzontale:

  • Durante il periodo di beta, l'app deve essere in ascolto su 0.0.0.0 (non 127.0.0.1 o localhost).

Creare un'app con scalabilità orizzontale

Per creare un'app con scalabilità orizzontale abilitata:

  1. Nell'area di lavoro Azure Databricks, fare clic sul selettore delle app App icon e selezionare Databricks Apps.
  2. Fare clic su + Crea app e quindi su Crea un'app personalizzata.
  3. Immettere un nome e configurare l'app come descritto in Creare un'app Databricks personalizzata.
  4. Nel passaggio Configura selezionareAbilita scalabilità orizzontale.
  5. Specificare il numero di istanze (1-5). Azure Databricks consiglia almeno 2 istanze per la disponibilità.
  6. Fare clic su Crea app.

L'abilitazione del ridimensionamento orizzontale per un'app non influisce su altre app nell'area di lavoro.

Le app con scalabilità orizzontale appena create non includono le librerie di Python preinstallate. Dichiarare tutte le dipendenze in requirements.txt o pyproject.toml. Vedere Gestire le dipendenze per un'app Databricks.

Convertire un'app standard per usare il ridimensionamento orizzontale

Convertire un'app standard esistente in un'app con scalabilità orizzontale dalla scheda Impostazioni . La conversione non comporta tempi di inattività. L'app standard esistente continua a gestire il traffico finché la nuova distribuzione con scalabilità orizzontale supera i controlli di integrità, a quel punto Azure Databricks riduce il traffico.

La conversione è reversibile. È possibile convertire un'app con scalabilità orizzontale in un'app standard dalla stessa scheda Impostazioni .

Comportamento di conversione

Il comportamento seguente si applica in fase di conversione:

Testare la conversione

La conversione modifica l'immagine di runtime e il modello di ridimensionamento dell'app. Prima di convertire un'app di produzione, verifica la modifica su una copia:

  1. Creare un duplicato dell'app standard da convertire.
  2. Convertire il duplicato seguendo questa procedura.
  3. Verificare che l'app funzioni come previsto nel duplicato convertito. Controllare i log, il traffico e qualsiasi comportamento di affinità di sessione.
  4. Converti l'app in produzione dopo la convalida.

Convertire un'app standard

Per convertire un'app standard in scala orizzontale:

  1. Nell'area di lavoro Azure Databricks, fare clic sul selettore delle app App icon e selezionare Databricks Apps.
  2. Fai clic sul nome dell'app che vuoi convertire.
  3. Fare clic sulla scheda Settings (Impostazioni).
  4. In Calcolo selezionareAbilita scalabilità orizzontale. Azure Databricks imposta il numero di istanze su 1, necessario in fase di conversione.
  5. Fai clic su Salva.

Azure Databricks avvia nuove risorse di calcolo con scalabilità orizzontale e quindi ridistribuisce l'applicazione su di esse. Il tempo totale dipende dalla durata della compilazione dell'app. L'app esistente continua a gestire il traffico per tutto il tempo.

Al termine della conversione, è possibile aumentare le risorse o scegliere di non includere le librerie preinstallate.

Gestire il numero di istanze

Per modificare il numero di istanze per un'app con scalabilità orizzontale:

  1. Nella pagina dei dettagli dell'app fare clic su Modifica.
  2. Nel passaggio Configura, aggiorna il numero di istanze.
  3. Fai clic su Salva.

L'app continua a gestire il traffico mentre Azure Databricks applica la modifica.

Affinità di sessione

L'affinità di sessione instrada ogni richiesta dallo stesso utente alla stessa istanza, quando possibile. Un'app può usare questo routing per mantenere dati di breve durata per utente (ad esempio, una cache in memoria o file temporanei nel file system locale) nell'istanza che gestisce la sessione dell'utente. L'affinità di sessione è nota anche come sessioni permanenti.

L'affinità di sessione è un'operazione ottimale. Non memorizzare nulla nello stato locale di un'istanza che non puoi ricostruire o recuperare da un archivio persistente. Memorizzare in modo persistente tutti i dati che devono persistere oltre una sessione in un archivio persistente, ad esempio nelle tabelle di Unity Catalog.

È anche possibile rendere persistenti i dati con Lakebase.

Applicazioni basate su browser

L'affinità di sessione funziona automaticamente per le app basate su browser. La prima richiesta da un browser indirizza a un'istanza selezionata in modo casuale, che imposta il __Host-databricks-app-router cookie. Le richieste successive con quel cookie vengono instradate alla stessa istanza.

Client API

Per ottenere l'affinità di sessione per i client API, includere il __Host-databricks-app-router cookie in ogni richiesta e impostarlo su un UUID generato in modo casuale. Tutte le richieste con lo stesso valore del cookie vengono instradate alla stessa istanza.

curl -X GET https://<your-app>.aws.databricksapps.com/api/endpoint \
  -H "Authorization: Bearer YOUR_BEARER_TOKEN" \
  -b "__Host-databricks-app-router=f8822466-3b1e-423a-988b-54c9e639c250"

Riassegnazione della sessione

Le sessioni possono spostarsi a un'istanza diversa nei casi seguenti:

  • Un'istanza diventa indisponibile (ad esempio, durante una distribuzione o un arresto anomalo).
  • Modifichi il numero di istanze.
  • Azure Databricks riequilibra le sessioni tra le istanze.
  • Una singola richiesta viene instradata in modo non corretto (rara).

Limitations

Le limitazioni seguenti si applicano alle app con scalabilità orizzontale:

  • Ogni area di lavoro può avere al massimo 5 app con scalabilità orizzontale. Contattare il rappresentante Azure Databricks per aumentare questo limite.
  • Ogni app con scalabilità orizzontale può avere al massimo 5 istanze. Contattare il rappresentante Azure Databricks per aumentare questo limite.
  • La scheda Log mostra i log da una singola istanza alla volta. Per visualizzare i log in tutte le istanze, abilitare la telemetria dell'app.