Procedure consigliate per la configurazione di calcolo classica

Questa pagina illustra le procedure consigliate per la configurazione delle risorse di calcolo classiche. Per la maggior parte dei nuovi carichi di lavoro, Databricks consiglia di usare il calcolo serverless, che non richiede alcuna configurazione. Se il carico di lavoro non è supportato nell'ambiente di calcolo serverless (vedere Limitazioni serverless), usare le procedure consigliate seguenti per configurare una risorsa di calcolo classica.

Nota

I flussi di lavoro di Structured Streaming hanno raccomandazioni di configurazione specifiche. Vedere Considerazioni sulla produzione per Structured Streaming.

Modalità di accesso

Le risorse di calcolo classiche possono essere assegnate alla modalità di accesso standard o dedicata, che determina chi può connettersi e usare la risorsa di calcolo.

Databricks consiglia di usare la modalità di accesso standard per la maggior parte dei carichi di lavoro. L'ambiente di calcolo standard può essere condiviso da più utenti e gruppi, applicando l'isolamento dell'utente e tutte le autorizzazioni di accesso ai dati. In questo modo è possibile gestire in modo più semplice e conveniente la maggior parte dei carichi di lavoro.

Usare la modalità di accesso dedicato solo se il carico di lavoro presenta limitazioni di calcolo standard specifiche, ad esempio ML Runtime in GPU, API RDD o R. Per altre informazioni, vedere Requisiti di calcolo standard e limitazioni.

Se Unity Catalog è abilitato, non impostare spark.databricks.passthrough.enabled. L'inoltro delle credenziali è una modalità di accesso obsoleta non compatibile con Unity Catalog.

Vedere Modalità di accesso.

Versione di Databricks Runtime

Usare la versione più recente di Databricks Runtime con supporto a lungo termine (LTS). Le versioni LTS ricevono patch di sicurezza estese e correzioni di bug, assicurandosi che i carichi di lavoro rimangano stabili e compatibili con le funzionalità della piattaforma più recenti.

Selezionare un runtime di Machine Learning solo se il carico di lavoro usa GPU, training di Machine Learning distribuito o AutoML. Databricks Runtime for ML installa un ampio set di librerie che, se non necessarie, possono entrare in conflitto con le dipendenze personalizzate, causando errori o problemi di correttezza non immediatamente visibili. Vedere Addestrare modelli di intelligenza artificiale (IA) e apprendimento automatico (ML).

Igiene della configurazione

Queste procedure mantengono pulite le configurazioni di calcolo e i carichi di lavoro portabili.

Evitare di usare script init

Gli script Init possono introdurre comportamenti imprevisti, inclusi i conflitti di libreria che interrompono i carichi di lavoro e rendono gli ambienti meno prevedibili. Aggiungete invece librerie ai criteri di elaborazione, usate %pip install nei notebook oppure definite le dipendenze in una specifica dell'ambiente. Consultate Aggiungere librerie a un criterio.

Evitare di codificare in modo statico le configurazioni di Spark

Evitare di codificare in modo statico le configurazioni di Spark (ad esempio spark.executor.memory o spark.dynamicAllocation.*) nelle definizioni di calcolo o dei job. I valori codificati in modo statico sovrascrivono le ottimizzazioni predefinite fornite da Azure Databricks, causando spesso costi inutili o un peggioramento delle prestazioni. Usa le configurazioni di sessione limitate al notebook solo quando hai un motivo specifico per sovrascrivere una configurazione predefinita.

Evitare percorsi di archiviazione locali di calcolo

Non archiviare i dati nei percorsi locali di calcolo, che non vengono mantenuti oltre il ciclo di vita del calcolo. Usare invece i volumi di Unity Catalog o uno spazio di archiviazione temporaneo. Vedere Che cosa sono i volumi?.

Evitare montaggi DBFS

I montaggi DBFS non dispongono di elenchi di controllo di accesso appropriati (ACL). Utilizzare invece i volumi di Unity Catalog o i file system dell'area di lavoro (WSFS). Vedere Che cosa sono i volumi?.

Evitare di installare librerie con ambito di calcolo

L'installazione di librerie a livello di calcolo crea una deviazione dell'ambiente tra processi. Usa invece %pip install nei notebook o definisci le dipendenze in una specifica dell’ambiente. Questo semplifica anche la migrazione dei carichi di lavoro classici a un’architettura serverless.

Performance

Valutare se trarre vantaggio da Photon

Molti carichi di lavoro traggono vantaggio da Photon, ma sono particolarmente utili per i carichi di lavoro SQL e le operazioni di dataframe che coinvolgono trasformazioni complesse, ad esempio join, aggregazioni e analisi dei dati su tabelle di grandi dimensioni. I carichi di lavoro con accesso frequente ai dischi, alle tabelle wide o all'elaborazione ripetuta dei dati possono anche migliorare le prestazioni.

I processi ETL batch semplici che non comportano trasformazioni estese o volumi di dati di grandi dimensioni possono avere un impatto minimo sull'abilitazione di Photon, soprattutto se le query vengono in genere completate in meno di due secondi.

Usa la scalabilità automatica

Configurare la scalabilità automatica in modo che le attività a esecuzione prolungata possano aggiungere e rimuovere dinamicamente nodi di lavoro durante l'esecuzione del processo. Consultare Abilitare la scalabilità automatica.

Usa i pool di istanze per ridurre i tempi di avvio

I pool di istanze riservano risorse di calcolo dal provider di servizi cloud. I pool riducono l'ora di inizio del nuovo cluster e garantiscono la disponibilità delle risorse di calcolo. Vedere Informazioni di riferimento sulla configurazione del pool.

Ottimizzazione dei costi

Utilizzare i criteri di calcolo

Azure Databricks consiglia di usare i criteri di calcolo. I criteri per l’ambiente di calcolo consentono di creare risorse di calcolo preconfigurate progettate per scopi specifici, ad esempio calcolo personale, calcolo condiviso, utenti esperti e processi. I criteri limitano le decisioni da prendere durante la configurazione delle impostazioni di calcolo.

Se non si ha accesso ai criteri, contattare l'amministratore dell'area di lavoro. Vedere Criteri predefiniti e famiglie di criteri.

Usare istanze spot

Configurare istanze spot per i carichi di lavoro con requisiti di latenza lax per ottimizzare i costi. Consulta Istanze spot.

Considerazioni sul dimensionamento delle risorse di calcolo

Nota

I seguenti consigli presuppongono che la creazione di cluster non sia limitata. Gli amministratori dell'area di lavoro devono concedere questo privilegio solo agli utenti avanzati.

Spesso si pensa alle dimensioni dell’ambiente di calcolo in termini di numero di ruoli di lavoro, ma esistono altri fattori importanti da considerare:

  • Numero totale di core degli executor (calcolo): il numero totale di core in tutti gli executor. Ciò determina il parallelismo massimo di un ambiente di calcolo.
  • Memoria totale dell'executor: quantità totale di RAM in tutti gli executor. Ciò determina la quantità di dati che è possibile archiviare in memoria prima di eseguire lo spill su disco.
  • Archiviazione locale dell'executor: tipo e quantità di spazio di archiviazione su disco locale. Il disco locale è usato principalmente in caso di fuoriuscite durante le operazioni di shuffle e memorizzazione nella cache.

Ulteriori considerazioni riguardano il tipo e le dimensioni dell'istanza del ruolo di lavoro, che influenzano anche i fattori sopra menzionati. Quando si dimensiona l’ambiente calcolo, occorre tenere presente quanto segue:

  • Quanta quantità di dati consumerà il carico di lavoro?
  • Qual è la complessità di calcolo del carico di lavoro?
  • Da dove vengono letti i dati?
  • Come vengono partizionati i dati nell'archiviazione esterna?
  • Quanto parallelismo è necessario?

Esiste un'azione di bilanciamento tra il numero di ruoli di lavoro e le dimensioni dei tipi di istanza del ruolo di lavoro. La configurazione del calcolo con due ruoli di lavoro, ognuno con 16 core e 128 GB di RAM, ha la stessa quantità di calcolo e memoria della configurazione del calcolo con 8 ruoli di lavoro, ognuno con 4 core e 32 GB di RAM.

Esempi di configurazione dell’ambiente di calcolo

Gli esempi seguenti mostrano raccomandazioni per l’ambiente di calcolo basate su tipi specifici di carichi di lavoro. Questi esempi includono anche configurazioni per evitare e perché tali configurazioni non sono adatte ai tipi di carico di lavoro.

Nota

Tutti gli esempi di questa sezione potrebbero trarre vantaggio dall'uso dell'elaborazione serverless anziché dall'avvio di una nuova risorsa di elaborazione. Se il carico di lavoro non è supportato in serverless, usare le raccomandazioni seguenti per configurare la risorsa di calcolo classica.

Analisi dei dati

Gli analisti dei dati eseguono in genere l'elaborazione che richiede dati da più partizioni, causando molte operazioni di rimescolamento. Una risorsa di calcolo con un numero ridotto di nodi più grandi può ridurre le operazioni di I/O su rete e disco necessarie per eseguire queste permutazioni.

Un calcolo a nodo singolo con un tipo di macchina virtuale di grandi dimensioni è probabilmente la scelta migliore, in particolare per un singolo analista.

I carichi di lavoro analitici richiederanno probabilmente la lettura ripetuta degli stessi dati, quindi i tipi di nodo consigliati sono quelli ottimizzati per l'archiviazione con cache del disco abilitata o istanze con archiviazione locale.

Altre funzionalità consigliate per i carichi di lavoro analitici includono:

  • Abilitare la terminazione automatica per assicurarsi che il calcolo venga terminato dopo un periodo di inattività.
  • Valutare la possibilità di abilitare la scalabilità automatica in base al carico di lavoro tipico dell'analista.

Batch ETL elementare

Per processi ETL batch semplici che non richiedono trasformazioni wide, ad esempio join o aggregazioni, usare istanze con requisiti inferiori per la memoria e l'archiviazione. Ciò potrebbe comportare risparmi sui costi rispetto ad altri tipi di lavoro.

Batch ETL complesso

Per un job ETL complesso, ad esempio uno che richiede operazioni UNION e join tra più tabelle, Azure Databricks consiglia di usare meno worker per ridurre la quantità di dati rimescolati. Per compensare il numero inferiore di lavoratori, aumenta la dimensione delle tue istanze.

Le trasformazioni complesse possono essere a elevato utilizzo di calcolo. Se osservi operazioni di scrittura su disco significative o errori di esaurimento della memoria, aumenta la quantità di memoria disponibile nelle istanze.

Facoltativamente, usare i pool di istanze per ridurre i tempi di avvio del calcolo e ridurre il runtime totale durante l'esecuzione di pipeline di processi.

Addestramento modelli di apprendimento automatico

Per eseguire il training di modelli di Machine Learning, Azure Databricks consiglia di creare una risorsa di calcolo usando i criteri di calcolo personale.

Usare un calcolo a nodo singolo con un tipo di nodo di grandi dimensioni per la sperimentazione iniziale. La presenza di un numero inferiore di nodi riduce l'impatto dei rimescolamenti.

L'aggiunta di più ruoli di lavoro può contribuire alla stabilità, ma evitare di aggiungere troppi lavoratori a causa del sovraccarico dei dati casuali.

I tipi di lavoratori consigliati sono quelli ottimizzati per l'archiviazione con cache su disco abilitata oppure istanze con archiviazione locale, per gestire le letture ripetute degli stessi dati e abilitare la memorizzazione nella cache dei dati di addestramento.

Le funzionalità aggiuntive consigliate per i carichi di lavoro di apprendimento automatico includono:

  • Abilitare la terminazione automatica per assicurarsi che il calcolo venga terminato dopo un periodo di inattività.
  • Usare i pool di istanze, che consentono di limitare il calcolo a un tipo di istanza pre-approvato.
  • Garantire configurazioni di calcolo coerenti utilizzando politiche.