Condividi tramite


Limiti di concorrenza e accodamento in Apache Spark per Microsoft Fabric

Si applica a:✅ Ingegneria dei Dati e Data Science in Microsoft Fabric

Microsoft Fabric consente l'allocazione di unità di calcolo tramite capacità, vale a dire un set dedicato di risorse utilizzabile in un determinato momento. La capacità definisce l'abilità di una risorsa di eseguire un'attività o di produrre output. Diversi elementi usano capacità diverse in un determinato momento. Microsoft Fabric offre capacità tramite SKU di Fabric e versioni di valutazione. Per altre informazioni, vedere Che cos’è la capacità?.

Quando gli utenti creano una capacità di Microsoft Fabric in Azure, scelgono una dimensione della capacità in base alle dimensioni del carico di lavoro di analisi. In Apache Spark gli utenti ottengono due VCore Apache Spark per ogni unità di capacità che prenotano come parte dello SKU.

Un'unità di capacità = Due VCore Spark

Dopo aver acquistato la capacità, gli amministratori possono creare aree di lavoro all'interno della capacità in Microsoft Fabric. I VCore Spark associati alla capacità vengono condivisi tra tutti gli elementi basati su Apache Spark, ad esempio notebook, definizioni di processi di Apache Spark e lakehouse creati nei workspaces.

Limitazione della concorrenza e accodamento

Spark for Fabric applica un meccanismo di limitazione e accodamento basato sui core, che consente agli utenti di inviare lavori in base agli SKU di capacità di Fabric acquistati. Il meccanismo di accodamento è una semplice coda basata su FIFO che controlla gli slot di lavoro disponibili e riprova automaticamente i lavori una volta che la capacità diventa disponibile.

Quando gli utenti inviano processi notebook o lakehouse (ad esempio Load to Table) e la capacità è al massimo utilizzo, a causa di processi simultanei che usano tutti i VCore Spark, ricevono l'errore seguente:

HTTP Response code 430: This Spark job can't be run because you have hit a Spark compute or API rate limit. To run this Spark job, cancel an active Spark job through the Monitoring hub, or choose a larger capacity SKU or try again later.

Con la coda abilitata, i processi del notebook attivati da pipeline, utilità di pianificazione dei processi e definizioni di processi Spark vengono aggiunti alla coda e ritentati automaticamente quando la capacità diventa disponibile.

Nota

La scadenza della coda è impostata su 24 ore dal momento di invio del processo. Dopo questo periodo, i lavori vengono rimossi dalla coda e devono essere presentati nuovamente manualmente.

Le capacità del sistema sono anche abilitate con bursting, consentendo di utilizzare fino a 3× il numero di Spark VCore acquistati. Questo aumento consente di migliorare la concorrenza permettendo l'esecuzione di più processi in parallelo.

Nota

Il fattore di bursting aumenta i VCores Spark totali per gestire la concorrenza e può essere sfruttato da un singolo lavoro, se il pool di Spark è configurato con un numero di core superiore.
In altre parole, la configurazione del pool determina il numero massimo di core che un processo può usare, non solo l'allocazione dello SKU di base.

Esempio

Se si dispone di uno SKU F64 con VCore Spark 384 max con fattore di burst:

  • È possibile configurare un pool personalizzato o iniziale con un massimo di 384 VCore Spark.
  • Se un amministratore dell'area di lavoro crea un pool di questo tipo, un singolo processo Spark (ad esempio, un notebook, una definizione di processo o un processo lakehouse) può usare tutti i 384 VCore.
  • Esempio: un pool con Medium nodi (8 VCore ciascuno) e 48 nodi massimi = 384 VCore.

Suggerimento

Per massimizzare le prestazioni del lavoro, verificare che il pool di lavoro sia configurato con un numero e dimensioni dei nodi sufficienti.

Limiti della capacità SKU di Spark

Capacità SKU del Fabric SKU di Power BI equivalente VCore Spark Numero massimo di VCore Spark con fattore di burst Limite della coda
F2 - 4 20 4
F4 - 8 24 4
F8 - 16 48 8
F16 - 32 96 16
F32 - 64 192 32
F64 P1 128 384 64
F128 P2 256 768 128
F256 P3 512 1536 256
F512 P4 1024 3072 512
F1024 - 2048 6144 1024
F2048 - 4096 12288 2048
Capacità della versione di valutazione P1 128 128 ND

Importante

La tabella si applica solo alle attività Spark in esecuzione su Capacità Fabric. Con la fatturazione con scalabilità automatica abilitata, i processi Spark vengono eseguiti separatamente dalla capacità di Fabric, evitando picchi o appianamenti. I VCore Spark totali saranno due volte le unità di capacità massime impostate nelle impostazioni di scalabilità automatica.

Calcolo di esempio

  • Un SKU F64 offre 128 VCore Spark.
  • Con un fattore di burst pari a 3, supporta fino a 384 VCore Spark per l'esecuzione simultanea.
  • Se un pool è configurato con i 384 VCore completi, un singolo processo può usarli tutti, presupponendo che nessun altro processo stia consumando capacità.
  • Esempio: 3 processi che usano 128 VCore ognuno può eseguire contemporaneamente o 1 processo usando 384 VCore.

Nota

I lavori hanno un periodo di scadenza della coda di 24 ore, una volta scaduto il quale vengono annullati e gli utenti devono sottometterli nuovamente per l'esecuzione.

La limitazione di Spark per Fabric non prevede limiti arbitrari basati sui processi; la limitazione si basa esclusivamente sul numero di core consentiti per lo SKU di capacità di Fabric acquistato. L'ammissione di lavoro per impostazione predefinita è un controllo di ammissione ottimistica, in cui i processi vengono ammessi in base ai requisiti minimi di base. Altre informazioni: Ammissione e gestione del lavoro.

Se l'opzione Pool predefinito (Starter Pool) è selezionata per l'area di lavoro, nella tabella seguente sono elencati i limiti di concorrenza massimi per i processi.

Altre informazioni: Configurazione dei pool di avvio.

Gli amministratori possono configurare i pool di Apache Spark per usare il massimo VCore Spark disponibile nella capacità, incluso il fattore di burst di 3× offerto da Fabric per l'esecuzione simultanea. Ad esempio, un amministratore dell'area di lavoro con capacità F64 Fabric può configurare il pool di Spark (pool di avvio o pool personalizzato) per l'uso di un massimo di 384 VCore Spark tramite:

Impostazione del numero massimo di nodi del pool di avvio su 48 (con nodi medi = 8 VCore ciascuno) o

Configurazione di un pool personalizzato usando nodi più grandi (ad esempio, XXLarge = 64 VCore ciascuno) con un numero di nodi appropriato per raggiungere la capacità desiderata.

Con questa configurazione, un singolo processo Spark può usare l'intera capacità burst, ideale per l'elaborazione dei dati su larga scala che assegna priorità alle prestazioni.

Nuovo: controllo del bursting a livello di processo tramite il portale di amministrazione. Gli amministratori della capacità ora hanno il controllo sull'abilitazione o la disabilitazione del bursting a questo livello tramite una nuova impostazione nel portale di amministrazione.

Passare al portale di amministrazione → impostazioni di capacità → scheda Progettazione dati/Scienza

Usare il nuovo interruttore "Disabilita il Bursting Job-Level" per impedire a un singolo processo Spark di consumare tutta la capacità di burst disponibile

Nota

Quando il bursting a livello di processo è disabilitato, il motore Spark impone che nessun singolo processo possa usare tutta la capacità disponibile (inclusi i core burst). Ciò garantisce che la capacità rimanga disponibile per i processi simultanei, migliorando le prestazioni e la concorrenza tra più utenti.

Questa funzionalità è particolarmente utile negli ambienti multi-tenant o a concorrenza elevata, in cui i carichi di lavoro devono essere bilanciati tra più team e pipeline. Gli amministratori possono ottimizzare questa impostazione in base al fatto che la capacità sia ottimizzata per la massima capacità di elaborazione dei processi (con bursting abilitato) o maggiore concorrenza e correttezza (bursting disabilitato).

Scenari di esempio con burst abilitato (impostazione predefinita): un processo di notebook batch di grandi dimensioni può usare tutti i 384 VCore Spark in una capacità F64, presupponendo che non siano in esecuzione altri processi.

Bursting disabilitato: un processo può essere limitato al limite di core di base (ad esempio, 128 VCore Spark per F64), consentendo l'avvio simultaneo di altri processi.

Suggerimento

Per i team con diversi tipi di attività (ETL, ML, Adhoc), la disabilitazione del bursting a livello di attività può contribuire a prevenire il monopolio della capacità e ridurre i ritardi nell'accodamento delle attività.