Condividi tramite


Limiti di concorrenza e accodamento in Apache Spark per Microsoft Fabric

Si applica a:✅ Ingegneria dei dati e data science di Fabric

Microsoft Fabric alloca il calcolo tramite capacità. La capacità è un set dedicato di risorse disponibili in un momento specifico e diversi elementi usano tale capacità in modo diverso. Fabric fornisce capacità tramite SKU di Fabric e capacità di prova. Per altre informazioni, vedere Che cos'è la capacità?

Quando si crea una capacità di Fabric, si seleziona una dimensione in base alle esigenze del carico di lavoro. In Apache Spark, ogni unità di capacità corrisponde a due VCores Spark.

Un'unità di capacità = due VCore Spark

Dopo che la capacità è stata fornita, gli amministratori creano aree di lavoro all'interno di essa. I VCore Spark vengono condivisi tra elementi basati su Spark in tali aree di lavoro, inclusi notebook, definizioni di processi Spark e processi lakehouse.

Limitazione della concorrenza e accodamento

Spark in Fabric usa la limitazione e la messa in coda basate sui core. L'ammissione al lavoro si basa sui VCores Spark disponibili nella capacità acquistata. L'accodamento usa il comportamento FIFO (First In, First Out) e riprova automaticamente i lavori in coda quando la capacità diventa disponibile.

Quando un notebook o un processo lakehouse (ad esempio Load to Table) viene inviato mentre viene usata completamente la capacità, Fabric restituisce questo errore:

[TooManyRequestsForCapacity] 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 lavori attivati dalle pipeline, dal pianificatore e dalle definizioni di processi Spark vengono accodati e ritentati automaticamente.

La coda non si applica ai processi notebook interattivi o ai processi notebook inviati tramite l'API pubblica del notebook.

Nota

La scadenza della coda è di 24 ore dal momento dell'invio del processo. Dopo tale periodo, le attività vengono rimosse dalla coda e devono essere inviate nuovamente manualmente.

Se una capacità di Fabric è in uno stato limitato, i nuovi processi Spark vengono rifiutati anziché accodati.

La limitazione di Spark in Fabric si basa su core disponibili, non su un limite arbitrario per numero di processi. Per impostazione predefinita, Spark usa il controllo di ammissione ottimistica, in cui i processi vengono ammessi usando i requisiti di base minimi. Per altre informazioni, vedere Ammissione e gestione dei lavori.

Configurazione del bursting e del pool

Le capacità dell'infrastruttura supportano il bursting, che consente il consumo di fino a i VCore Spark acquistati. Il bursting può aumentare la concorrenza consentendo una maggiore esecuzione in parallelo quando vi è capacità disponibile.

Nota

Il fattore di burst aumenta i VCore Spark totali per la concorrenza e può essere usato anche da un singolo processo se il pool di Spark è configurato con core sufficienti. 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: F64 con bursting

Se si usa uno SKU F64, il numero massimo di burst è 384 Spark VCore:

  • È possibile configurare un pool di avvio o personalizzato con un massimo di 384 VCore Spark.
  • Se il pool è configurato per tale limite, un singolo processo Spark può utilizzare tutti i 384 VCore.
  • Esempio: Medium nodi (8 VCores ciascuno) × 48 nodi massimi = 384 VCores.

Suggerimento

Per ottimizzare le prestazioni del lavoro, configurare il pool di workspace con dimensioni dei nodi appropriate e conta massima di nodi.

Controllo bursting a livello di job

Gli amministratori della capacità possono abilitare o disabilitare il bursting a livello di job nel portale di amministrazione.

  1. Passare al portale di amministrazione>Impostazioni di capacità>Capacità infrastruttura.
  2. Selezionare la capacità che si desidera gestire.
  3. Apri Impostazioni di ingegneria/scienza dei dati>Apri calcolo Spark.
  4. Usare Disabilita bursting a livello di processo.

Quando il bursting a livello di processo è disabilitato, Spark impedisce a qualsiasi singolo processo di usare tutta la capacità disponibile (inclusi i core burst). Questo comportamento consente di mantenere disponibile la capacità per altre operazioni simultanee.

Questa impostazione è utile per ambienti multi-tenant o ad alta concorrenza, in cui equità e velocità effettiva tra i team sono più importanti rispetto all'ottimizzazione del runtime di un processo.

Scenari di esempio

Bursting abilitato (impostazione predefinita)

Un processo notebook batch di grandi dimensioni può usare tutti i 384 VCore Spark con una capacità F64 quando non sono in esecuzione altri processi.

Funzione di bursting disabilitata

Un job può essere limitato al limite di core di base (ad esempio, 128 VCore Spark per F64), lasciando spazio libero per l'avvio di altri job.

Suggerimento

Per i carichi di lavoro misti (ad esempio, ETL, ML e analisi ad hoc), la disabilitazione del bursting a livello di attività può ridurre la monopolizzazione della capacità e i ritardi di accodamento.

Limiti della capacità SKU di Spark

Capacità SKU del Fabric SKU di Power BI equivalente VCore Spark Numero massimo di core virtuali Spark con fattore di scoppio 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 Non disponibile

Importante

Questa tabella si applica solo ai processi Spark in esecuzione nella capacità Fabric. Con la fatturazione con scalabilità automatica abilitata, i processi Spark vengono eseguiti separatamente dalla capacità di Fabric e non usano burst o smoothing. I VCore Spark totali sono il doppio delle unità di capacità massima impostate nelle impostazioni di autoscalabilità.

Calcolo di esempio

  • Uno F64 SKU offre 128 VCores Spark.
  • Con un fattore di burst 3× supporta fino a 384 Spark VCore.
  • Se un pool è configurato per tutti i 384 VCore, un processo può utilizzare tutti i 384 quando la capacità è altrimenti gratuita.
  • Esempio: o tre processi da 128-VCore vengono eseguiti simultaneamente, oppure un processo da 384-VCore.

Nota

Le attività scadono dalla coda entro 24 ore e devono essere reinviate.

Per altre informazioni sui pool di avvio e sulla configurazione, vedere Configurare i pool di avvio in Fabric.