Configurazioni di pool di Apache Spark in Azure Synapse Analytics
Un pool di Spark è un set di metadati che definisce i requisiti delle risorse di calcolo e le caratteristiche di comportamento associate quando viene creata un'istanza di Spark. Queste caratteristiche includono, in via esemplificativa, un nome, il numero dei nodi, le dimensioni dei nodi, il comportamento di scalabilità e la durata. Un pool di Spark in sé non utilizza alcuna risorsa. Non sono previsti costi per la creazione di pool di Spark. Gli addebiti vengono addebitati solo dopo l'esecuzione di un processo Spark nel pool Spark di destinazione e l'istanza di Spark viene creata su richiesta.
Per informazioni su come creare un pool di Spark e visualizzarne tutte le proprietà, vedere Creare un pool di Apache Spark (anteprima) in Synapse Analytics usando gli strumenti Web.
Ambiente di calcolo isolato
L'opzione Calcolo isolato offre maggiore sicurezza per le risorse di calcolo Spark da servizi non attendibili in quanto dedica la risorsa di calcolo fisica a un singolo cliente. L’opzione di ambiente di calcolo isolato è più adatta per i carichi di lavoro che richiedono un elevato grado di isolamento dai carichi di lavoro di altri clienti per motivi che includono requisiti normativi e di conformità. L'opzione Calcolo isolato è disponibile solo con le dimensioni del nodo XXXLarge (80 vCPU/504 GB) ed è disponibile solo nelle aree seguenti. È possibile abilitare o disabilitare l’opzione Ambiente di calcolo isolato dopo la creazione del pool, benché sia talvolta necessario riavviare l'istanza. Se si prevede di abilitare questa funzionalità in futuro, assicurarsi che l'area di lavoro di Synapse venga creata in una regione che supporta il Calcolo isolato.
- Stati Uniti orientali
- Stati Uniti occidentali 2
- Stati Uniti centro-meridionali
- US Gov Arizona
- US Gov Virginia
Nodi
L'istanza del pool di Apache Spark è costituita da un nodo head e da due o più nodi di lavoro con almeno tre nodi in un'istanza di Spark. Il nodo head esegue servizi di gestione aggiuntivi, ad esempio Livy, Yarn Resource Manager, Zookeeper e il driver Spark. Tutti i nodi eseguono servizi come Node Agent e Yarn Node Manager. Tutti i nodi di lavoro eseguono il servizio Spark Executor.
Dimensioni dei nodi
È possibile definire un pool di Spark con dimensioni dei nodi che vanno da un nodo di calcolo di piccole dimensioni con 4 vCore e 32 GB di memoria fino a un nodo di calcolo XXLarge con 64 vCore e 432 GB di memoria per nodo. È possibile modificare le dimensioni dei nodi dopo la creazione del pool, benché sia talvolta necessario riavviare l’istanza.
Dimensione | vCore | Memoria |
---|---|---|
Piccola | 4 | 32 GB |
Medio | 8 | 64 GB |
Grande | 16 | 128 GB |
XLarge | 32 | 256 GB |
XXLarge | 64 | 432 GB |
XXX Large (Calcolo isolato) | 80 | 504 GB |
Autoscale
La scalabilità automatica per i pool di Apache Spark consente di aumentare e ridurre automaticamente le risorse di calcolo in base alla quantità di attività. Quando la funzionalità di scalabilità automatica è abilitata, impostare il numero minimo e massimo di nodi da ridimensionare. Quando la funzionalità di scalabilità automatica è disabilitata, il numero di nodi impostati rimarrà fisso. Questa impostazione può essere modificata dopo la creazione del pool, benché sia talvolta necessario riavviare l'istanza.
Archiviazione del pool elastico
I pool di Apache Spark ora supportano l'archiviazione del pool elastico. L'archiviazione del pool elastico consente al motore Spark di monitorare l'archiviazione temporanea del nodo di lavoro e di collegare altri dischi, se necessario. I pool di Apache Spark usano l'archiviazione su disco temporanea mentre viene creata un'istanza del pool. I processi Spark scrivono output di mapping di sequenze casuali, dati casuali e dati spillati nei dischi delle VM locali. Esempi di operazioni che possono utilizzare il disco locale sono l’ordinamento, la memorizzazione nella cache e la persistenza. Quando si esaurisce lo spazio su disco temporaneo della macchina virtuale, i processi Spark potrebbero concludersi con un esito negativo a causa di un errore di "Spazio su disco insufficiente" (java.io.IOException: niente spazio rimasto nel dispositivo). Con errori di "Spazio su disco insufficiente", gran parte del carico di lavoro per evitare che i processi non riescano a passare al cliente per riconfigurare i processi Spark (ad esempio, modificare il numero di partizioni) o i cluster (ad esempio, aggiungere altri nodi al cluster). Questi errori potrebbero non essere coerenti e di conseguenza l'utente risentirne pesantemente quando questi processi vengono eseguiti in fase di produzione. Questo processo può essere costoso per l'utente per diversi aspetti:
- Spreco di tempo. I clienti devono sperimentare pesantemente le configurazioni dei processi tramite tentativi ed errori e devono comprendere le metriche interne di Spark per prendere la decisione corretta.
- Spreco di risorse. Poiché i processi di produzione possono elaborare una quantità variabile di dati, i processi Spark possono avere esito negativo in modo non deterministico se le risorse non vengono sottoposte a provisioning eccessivo. Si consideri, ad esempio, il problema dell'asimmetria dei dati, che può comportare che alcuni nodi richiedano più spazio su disco rispetto ad altri. Attualmente in Synapse, ogni nodo in un cluster occupa le stesse dimensioni di spazio su disco e l'aumento dello spazio su disco in tutti i nodi non è una soluzione ideale e comporta enormi sprechi.
- Rallentamento nell'esecuzione dei processi. Nello scenario ipotetico in cui viene risolto il problema tramite la scalabilità automatica dei nodi (presupponendo che i costi non siano un problema per il cliente finale), l'aggiunta di un nodo di calcolo continua a essere costosa (impiega pochi minuti) rispetto all’aggiungere spazio di archiviazione (impiega pochi secondi).
Non è necessaria alcuna azione; inoltre, si noterà un minor numero di errori del processo.
Nota
L’archiviazione del pool elastico di Azure Synapse è attualmente disponibile in anteprima pubblica. Durante l'anteprima pubblica non sono previsti costi per l'uso dell'archiviazione del pool elastico.
Sospensione automatica
La funzionalità di sospensione automatica rilascia le risorse dopo un periodo di inattività impostato, riducendo il costo complessivo di un pool di Apache Spark. È possibile impostare il numero di minuti di inattività dopo l'abilitazione di questa funzionalità. La funzionalità di sospensione automatica è indipendente da quella di scalabilità automatica. È possibile sospendere le risorse se la scalabilità automatica è abilitata o disabilitata. È possibile modificare questa impostazione dopo la creazione del pool, anche se è necessario riavviare le sessioni attive.