Dimensionare automaticamente i pool di Apache Spark in Azure Synapse Analytics

La funzionalità di scalabilità automatica del pool di Apache Spark per Azure Synapse Analytics consente di aumentare o ridurre automaticamente il numero di nodi in un istanza del cluster. Durante la creazione di un nuovo pool di Apache Spark per Azure Synapse Analytics, un numero minimo e massimo di nodi, fino a 200 nodi, può essere impostato quando è selezionata la scalabilità automatica. La funzionalità di scalabilità automatica monitora quindi i requisiti del carico in termini di risorse e aumenta o riduce il numero di nodi. Per l'uso di questa funzionalità non sono previsti costi aggiuntivi.

Monitoraggio delle metriche

La funzionalità di scalabilità automatica monitora continuamente l'istanza di Spark e raccoglie le metriche seguenti:

Metrico Descrizione
Total Pending CPU (Totale CPU in sospeso) Numero totale di core necessari per avviare l'esecuzione di tutti i processi in sospeso.
Total Pending Memory (Totale memoria in sospeso) Memoria totale (in MB) necessaria per avviare l'esecuzione di tutti i processi in sospeso.
Total Free CPU (Totale CPU disponibile) Somma di tutti i core inutilizzati nei nodi attivi.
Total Free Memory (Totale memoria disponibile) Somma della memoria inutilizzata (in MB) nei nodi attivi.
Used Memory per Node (Memoria utilizzata per nodo) Carico su un nodo. Un nodo in cui sono usati 10 GB di memoria è considerato come sottoposto a un carico superiore rispetto a un nodo del ruolo di lavoro con 2 GB di memoria usata.

Le metriche elencate in precedenza vengono controllate ogni 30 secondi. La funzionalità di scalabilità automatica si basa su queste metriche per decidere se aumentare o ridurre il numero di nodi.

Condizioni di scalabilità in base al carico

Quando vengono rilevate le condizioni seguenti, la funzionalità di scalabilità automatica invia una richiesta di aumento o riduzione delle dimensioni:

Aumentare Riduzione
Il totale CPU in sospeso è maggiore del totale CPU disponibile per più di 1 minuto. Il totale CPU in sospeso è minore del totale CPU disponibile per più di 2 minuti.
Il totale memoria in sospeso è maggiore del totale memoria disponibile per più di 1 minuto. Il totale memoria in sospeso è minore del totale memoria disponibile per più di 2 minuti.

Per aumentare il numero di nodi, il servizio di scalabilità automatica di Azure Synapse calcola il numero di nuovi nodi necessari per soddisfare i requisiti correnti in termini di CPU e memoria e quindi invia una richiesta di aumento dei nodi per aggiungere il numero di nodi necessario.

Per ridurre le prestazioni, in base al numero di executor, ai master applicazioni per nodo, ai requisiti correnti di CPU e memoria, la scalabilità automatica invia una richiesta di rimozione di un determinato numero di nodi. Il servizio rileva anche i nodi candidati per la rimozione in base all'esecuzione del processo corrente. L'operazione di riduzione prevede prima la disattivazione e quindi il ritiro dei nodi dal cluster.

Nota

Nota sull'aggiornamento e la forza dell'applicazione della configurazione della scalabilità automatica a un pool di Spark esistente. Se forza la nuova impostazione nella portale di Azure o ForceApplySetting in PowerShell è abilitata, tutte le sessioni Spark esistenti vengono terminate e le modifiche alla configurazione vengono applicate immediatamente. Se questa opzione non è selezionata, la configurazione viene applicata alle nuove sessioni Spark e le sessioni esistenti non vengono terminate.

Operazioni preliminari

Creare un pool di Apache Spark serverless con scalabilità automatica

Per abilitare la funzionalità di scalabilità automatica, completare la procedura seguente durante il normale processo di creazione del pool:

  1. Nella scheda Informazioni di base selezionare la casella di controllo Abilita scalabilità automatica.

  2. Immettere i valori desiderati per le proprietà seguenti:

    • Numero minimo di nodi.
    • Numero massimo di nodi.

Il numero iniziale di nodi corrisponderà al numero minimo. Questo valore definisce le dimensioni iniziali dell'istanza al momento della creazione. Il numero minimo di nodi non può essere inferiore a tre.

Facoltativamente, è possibile abilitare l'allocazione dinamica degli executor negli scenari in cui i requisiti dell'executor sono molto diversi tra le fasi di un processo Spark o il volume di dati elaborati varia con il tempo. Abilitando l'allocazione dinamica degli executor, è possibile usare la capacità in base alle esigenze.

Quando si abilita l'allocazione dinamica, consente al processo di ridimensionare il numero di executor entro min e il numero massimo di executor specificati.

Apache Spark abilita la configurazione dell'allocazione dinamica degli executor tramite il codice come indicato di seguito:

    %%configure -f
    {
        "conf" : {
            "spark.dynamicAllocation.maxExecutors" : "6",
            "spark.dynamicAllocation.enabled": "true",
            "spark.dynamicAllocation.minExecutors": "2"
     }
    }

Le impostazioni predefinite specificate tramite il codice sostituiscono i valori impostati tramite l'interfaccia utente.

In questo esempio, se il processo richiede solo 2 executor, userà solo 2 executor. Quando il processo richiede di più, verrà ridimensionato fino a 6 executor (1 driver, 6 executor). Quando il processo non richiede gli executor, verranno rimossi gli executor. Se non è necessario, il nodo verrà liberato.

Nota

MaxExecutors riserva il numero di executor configurati. Considerando l'esempio, anche se si usa solo 2, verrà riservato 6.

Di conseguenza, quando si abilita l'allocazione dinamica, gli executor aumentano o si abbassano in base all'utilizzo degli executor. In questo modo si garantisce che venga effettuato il provisioning degli executor in base alle esigenze del processo in esecuzione.

Procedure consigliate

Considerare la latenza delle operazioni di aumento o riduzione

Il completamento di un'operazione di ridimensionamento può richiedere da 1 a 5 minuti.

Prepararsi per la riduzione delle prestazioni

Durante il processo di riduzione delle prestazioni dell'istanza, la scalabilità automatica inserisce i nodi nello stato di rimozione delle autorizzazioni in modo che nessun nuovo executor possa essere avviato su tale nodo.

I processi in esecuzione continueranno a essere eseguiti e verranno completati. I processi in sospeso rimarranno in attesa di essere pianificati come normali con un numero minore di nodi disponibili.

Nota

Per impostazione predefinita, spark.yarn.executor.decommission.enabled è impostato su true, consentendo l'arresto automatico dei nodi sottoutilizzati per ottimizzare l'efficienza di calcolo. Se si preferisce un ridimensionamento meno aggressivo, questa configurazione può essere impostata su false.

Passaggi successivi

Avvio rapido per creare un nuovo pool di Spark: Creare un pool di Spark