Basisconcepten van Apache Spark in Azure Synapse Analytics
Apache Spark is een framework voor parallelle verwerking dat ondersteuning biedt voor in-memory verwerking om de prestaties van toepassingen voor de analyse van big data te verbeteren. Apache Spark in Azure Synapse Analytics is een van de implementaties van Apache Spark van Microsoft in de cloud.
Met Azure Synapse kunt u eenvoudig Spark-functies maken en configureren in Azure. Azure Synapse biedt een andere implementatie van de Spark-functies die hier worden beschreven.
Spark-pools
Een serverloze Apache Spark-pool maakt u in Azure Portal. Een Spark-pool wordt, wanneer deze wordt geïnstantieerd, standaard gebruikt voor het maken van een Spark-exemplaar dat gegevens verwerkt. Wanneer er een Spark-pool wordt gemaakt, bestaat deze alleen als een set metagegevens;en er geen resources worden verbruikt, uitgevoerd of in rekening gebracht. Een Spark-groep bevat een reeks eigenschappen die de kenmerken van een Spark-exemplaar bepalen. Deze kenmerken omvatten, maar zijn niet beperkt tot naam, grootte, schaalgedrag, time to live.
Omdat er geen resourcekosten zijn verbonden aan het maken van Spark-pools, kunt u een onbeperkt aantal met verschillende configuraties maken. Er kunnen ook machtigingen op Spark-pools worden toegepast, zodat gebruikers alleen toegang hebben tot sommige pools.
U kunt het beste kleinere Spark-pools maken die kunnen worden gebruikt voor ontwikkeling en foutopsporing en vervolgens grotere maken voor het uitvoeren van productieworkloads.
In Get started with Spark pools in Azure Synapse Analytics (Aan de slag met Spark-pools in Azure Synapse Analytics) kunt u lezen hoe u een Spark-pool maakt en alle bijbehorende eigenschappen bekijkt
Spark-exemplaren
Spark-exemplaren worden gemaakt wanneer u verbinding maakt met een Spark-pool, een sessie maakt of een taak uitvoert. Aangezien meerdere gebruikers toegang tot één Spark-pool kunnen hebben, wordt er een nieuw Spark-exemplaar gemaakt voor elke gebruiker die ermee verbinding maakt.
Wanneer u een tweede taak indient en er capaciteit in de pool is, heeft het bestaande Spark-exemplaar ook capaciteit. Vervolgens verwerkt het bestaande exemplaar de taak. Als er anders capaciteit beschikbaar is op poolniveau, wordt er een nieuw Spark-exemplaar gemaakt.
Facturering voor de exemplaren wordt gestart wanneer de Azure-VM('s) worden gestart. Facturering voor de Spark-poolexemplaren stopt wanneer poolexemplaren worden beëindigd. Zie Statussen en factureringsstatus van virtuele Azure-machines voor meer informatie over hoe virtuele Azure-machines worden gestart en de toewijzing ervan ongedaan worden gemaakt.
Voorbeelden
Voorbeeld 1
- U maakt een Spark-pool met de naam SP1; het heeft een vaste clustergrootte van 20 middelgrote knooppunten
- U verzendt een notebooktaak, J1 die gebruikmaakt van 10 knooppunten, een Spark-exemplaar, SI1 wordt gemaakt om de taak te verwerken
- U verzendt nu een andere taak, J2, die gebruikmaakt van 10 knooppunten, omdat er nog capaciteit is in de pool en het exemplaar, de J2, wordt verwerkt door SI1
- Als J2 om 11 knooppunten had gevraagd, zou er geen capaciteit zijn in SP1 of SI1. In dit geval, als J2 afkomstig is van een notebook, wordt de taak geweigerd; als J2 afkomstig is van een batchtaak, wordt deze in de wachtrij geplaatst.
- Facturering begint bij het verzenden van notebooktaak J1.
- De Spark-pool wordt geïnstantieerd met 20 middelgrote knooppunten, elk met 8 vCores, en duurt doorgaans ongeveer 3 minuten om te starten. 20 x 8 = 160 vCores.
- Afhankelijk van de exacte opstarttijd van de Spark-pool, time-out voor inactiviteit en runtime van de twee notebooktaken; de pool wordt waarschijnlijk gedurende 18 tot 20 minuten uitgevoerd (instantiëringstijd van Spark-pool + runtime van notebooktaak + time-out voor inactiviteit).
- Uitgaande van runtime van 20 minuten, 160 x 0,3 uur = 48 vCore-uren.
- Opmerking: vCore-uren worden per minuut gefactureerd en de vCore-prijzen variëren per Azure-regio. Zie Prijzen voor Azure Synapse voor meer informatie
Voorbeeld 2
- U maakt een Spark-pool aanroep SP2; er is een automatische schaalaanpassing ingeschakeld met minimaal 10 tot maximaal 20 middelgrote knooppunten
- U verzendt een notebooktaak J1 die gebruikmaakt van 10 knooppunten; er een Spark-exemplaar SI1 wordt gemaakt om de taak te verwerken
- U verzendt nu nog een taak J2 die gebruikmaakt van 10 knooppunten; omdat er nog steeds capaciteit in de pool is, wordt het exemplaar automatisch geschaald naar 20 knooppunten en verwerkt J2.
- Facturering begint bij het verzenden van notebooktaak J1.
- De Spark-pool wordt geïnstantieerd met 10 middelgrote knooppunten, elk met 8 vCores, en duurt doorgaans ongeveer 3 minuten om te starten. 10 x 8, 80 vCores.
- Bij het indienen van J2 wordt de pool automatisch geschaald door nog eens 10 middelgrote knooppunten toe te voegen en duurt het doorgaans 4 minuten om automatisch te schalen. 10 x 8, 80 vCores toevoegen voor in totaal 160 vCores.
- Afhankelijk van de opstarttijd van de Spark-pool, runtime van de eerste notebooktaak J1, de tijd om de pool op te schalen, runtime van het tweede notebook en ten slotte de time-out voor inactiviteit; de pool wordt waarschijnlijk uitgevoerd tussen 22 en 24 minuten (instantiëringstijd van Spark-pool + J1 notebook job runtime allemaal op 80 vCores) + (Spark-pool automatische schaalaanpassingstijd + J2 notebook job runtime + time-out voor inactiviteit allemaal op 160 vCores).
- 80 vCores gedurende 4 minuten + 160 vCores gedurende 20 minuten = 58,67 vCore-uren.
- Opmerking: vCore-uren worden per minuut gefactureerd en de vCore-prijzen variëren per Azure-regio. Zie Prijzen voor Azure Synapse voor meer informatie
Voorbeeld 3
- U maakt een Spark-pool met de naam SP1; deze heeft een vaste clustergrootte van 20 knooppunten.
- U verzendt een notebooktaak J1 die gebruikmaakt van 10 knooppunten; er wordt een Spark-exemplaar SI1 gemaakt om de taak te verwerken.
- Een andere gebruiker U2 verzendt een taak J3 die 10 knooppunten gebruikt; er wordt een nieuwe Spark-instantie SI2 gemaakt om de taak te verwerken.
- U verzendt nu nog een taak J2 die gebruikmaakt van 10 knooppunten; omdat er nog steeds capaciteit in de pool is en de instantie J2 wordt verwerkt door SI1.
- Facturering begint bij het verzenden van notebooktaak J1.
- De Spark-pool SI1 wordt geïnstantieerd met 20 middelgrote knooppunten, elk met 8 vCores, en duurt doorgaans ongeveer 3 minuten om te starten. 20 x 8, 160 vCores.
- Afhankelijk van de exacte opstarttijd van de Spark-pool, de time-out voor ide en de runtime van de eerste en derde notebooktaak; De SI1-pool wordt waarschijnlijk gedurende 18 tot 20 minuten uitgevoerd (instantiëringstijd van Spark-pool + runtime van notebooktaak + time-out voor inactiviteit).
- Een andere Spark-pool SI2 wordt geïnstantieerd met 20 middelgrote knooppunten, elk met 8 vCores, en duurt meestal ongeveer 3 minuten om te starten. 20 x 8, 160 vCores
- Afhankelijk van de exacte opstarttijd van de Spark-pool, de time-out voor ide en de runtime van de eerste notebooktaak; De SI2-pool wordt waarschijnlijk gedurende 18 tot 20 minuten uitgevoerd (instantiatietijd van Spark-pool + runtime van notebooktaak + time-out voor inactiviteit).
- Ervan uitgaande dat de twee pools gedurende 20 minuten worden uitgevoerd, 160 x .03 x 2 = 96 vCore-uren.
- Opmerking: vCore-uren worden per minuut gefactureerd en de vCore-prijzen variëren per Azure-regio. Zie Prijzen voor Azure Synapse voor meer informatie
Quota en resourcebeperkingen in Apache Spark voor Azure Synapse
Niveau van de werkruimte
Elke Azure Synapse-werkruimte wordt geleverd met een standaardquotum van vCores die kunnen worden gebruikt voor Apache Spark. Het quotum wordt opgesplitst in het gebruikersquotum en het gegevensstroomquotum, zodat geen van beide gebruikspatronen alle vCores in de werkruimte gebruikt. Het quotum verschilt, afhankelijk van het type abonnement, maar is gelijk verdeeld tussen de gebruikers en de gegevensstroom. Als u echter meer vCores aanvraagt dan in de werkruimte resteert, krijgt u de volgende fout:
Failed to start session: [User] MAXIMUM_WORKSPACE_CAPACITY_EXCEEDED
Your Spark job requested 480 vCores.
However, the workspace only has xxx vCores available out of quota of yyy vCores.
Try reducing the numbers of vCores requested or increasing your vCore quota. Click here for more information - https://go.microsoft.com/fwlink/?linkid=213499
De koppeling in het bericht verwijst naar dit artikel.
In het volgende artikel wordt beschreven hoe u een toename van het vCore-quotum van de werkruimte aanvraagt.
- Selecteer 'Azure Synapse Analytics' als het servicetype.
- Selecteer in het venster Quotumgegevens de optie Apache Spark (vCore) per werkruimte
Een capaciteitstoename aanvragen via Azure Portal
Niveau van Spark-pool
Wanneer u een Spark-pool definieert, definieert u effectief een quotum per gebruiker voor die pool, als u meerdere notebooks uitvoert, of taken of een combinatie van de 2, is het mogelijk om het poolquotum op te halen. Als u dit doet, wordt er een foutbericht gegenereerd
Failed to start session: Your Spark job requested xx vCores.
However, the pool is consuming yy vCores out of available zz vCores.Try ending the running job(s) in the pool, reducing the numbers of vCores requested, increasing the pool maximum size or using another pool
Om dit probleem op te lossen, moet u het gebruik van de poolresources verminderen voordat u een nieuwe resourceaanvraag indient door een notebook of taak uit te voeren.