Synapse POC-playbook: Big data-analyses met Apache Spark-pool in Azure Synapse Analytics
Dit artikel bevat een methodologie op hoog niveau voor het voorbereiden en uitvoeren van een effectief Azure Synapse Analytics-proof-of-conceptproject (POC) voor Apache Spark-pool.
Notitie
Dit artikel maakt deel uit van de Azure Synapse-proof of concept playbook-serie artikelen. Zie Azure Synapse proof of concept playbook voor een overzicht van de reeks.
Voorbereiden op de POC
Met een POC-project kunt u een weloverwogen zakelijke beslissing nemen over het implementeren van een big data- en geavanceerde analyseomgeving op een cloudplatform dat gebruikmaakt van een Apache Spark-pool in Azure Synapse.
Een POC-project identificeert uw belangrijkste doelstellingen en zakelijke stuurprogramma's die big data in de cloud en het geavanceerde analyseplatform moeten ondersteunen. Hiermee worden belangrijke metrische gegevens getest en worden belangrijke gedragingen bewezen die essentieel zijn voor het succes van uw data engineering, machine learning-modelbouw en trainingsvereisten. Een POC is niet ontworpen om te worden geïmplementeerd in een productieomgeving. In plaats daarvan is het een kortetermijnproject dat zich richt op belangrijke vragen en het resultaat ervan kan worden verwijderd.
Voordat u begint met het plannen van uw Spark POC-project:
- Identificeer eventuele beperkingen of richtlijnen die uw organisatie heeft over het verplaatsen van gegevens naar de cloud.
- Identificeer leidinggevenden of bedrijfssponsors voor een big data- en advanced analytics-platformproject. Beveilig hun ondersteuning voor migratie naar de cloud.
- Identificeer de beschikbaarheid van technische experts en zakelijke gebruikers die u ondersteunen tijdens de POC-uitvoering.
Voordat u begint met het voorbereiden van het POC-project, raden we u aan eerst de Apache Spark-documentatie te lezen.
Tip
Als u nog niet bekend bent met Spark-pools, raden we u aan om het leertraject Data Engineering uitvoeren met Azure Synapse Apache Spark Pools uit te voeren.
U moet nu hebben vastgesteld dat er geen directe obstakels zijn en u kunt beginnen met het voorbereiden van uw POC. Als u geen kennis hebt van Apache Spark-pools in Azure Synapse Analytics, kunt u deze documentatie raadplegen, waar u een overzicht van de Spark-architectuur kunt krijgen en hoe deze werkt in Azure Synapse.
Ontwikkel een goed begrip van deze belangrijke concepten:
- Apache Spark en de gedistribueerde architectuur.
- Spark-concepten zoals Resilient Distributed Datasets (RDD) en partities (in-memory en fysiek).
- Azure Synapse-werkruimte, de verschillende rekenengines, pijplijnen en bewaking.
- Scheiding van rekenkracht en opslag in Spark-pool.
- Verificatie en autorisatie in Azure Synapse.
- Systeemeigen connectors die worden geïntegreerd met een toegewezen SQL-pool van Azure Synapse, Azure Cosmos DB en andere.
Azure Synapse koppelt rekenresources los van opslag, zodat u uw behoeften voor gegevensverwerking beter kunt beheren en de kosten kunt beheren. Met de serverloze architectuur van Spark-pool kunt u uw Spark-cluster omhoog en omlaag instellen en verkleinen, onafhankelijk van uw opslag. U kunt een Spark-cluster volledig onderbreken (of automatisch onderbreken) onderbreken. Op die manier betaalt u alleen voor rekenkracht wanneer deze in gebruik is. Wanneer deze niet in gebruik is, betaalt u alleen voor opslag. U kunt uw Spark-cluster omhoog schalen voor zware gegevensverwerkingsbehoeften of grote belastingen en vervolgens weer omlaag schalen tijdens minder intensieve verwerkingstijden (of volledig afsluiten). U kunt een cluster effectief schalen en onderbreken om de kosten te verlagen. Uw Spark POC-tests moeten gegevensopname en gegevensverwerking bevatten op verschillende schaal (klein, gemiddeld en groot) om de prijs en prestaties op verschillende schaal te vergelijken. Zie Azure Synapse Analytics Apache Spark-pools automatisch schalen voor meer informatie.
Het is belangrijk om inzicht te hebben in het verschil tussen de verschillende sets Spark-API's, zodat u kunt bepalen wat het beste werkt voor uw scenario. U kunt kiezen voor de functie die betere prestaties of gebruiksgemak biedt, waarbij u kunt profiteren van de bestaande vaardighedensets van uw team. Zie A Tale of Three Apache Spark-API's: RDD's, DataFrames en Datasets voor meer informatie.
Gegevens- en bestandspartitionering werken iets anders in Spark. Als u de verschillen begrijpt, kunt u de prestaties optimaliseren. Zie de Apache Spark-documentatie: Opties voor partitiedetectie en partitieconfiguratie voor meer informatie.
De doelen instellen
Voor een succesvol POC-project is planning vereist. Begin met het identificeren waarom u een POC uitvoert om de echte motivaties volledig te begrijpen. Motivaties kunnen betrekking hebben op modernisering, kostenbesparing, prestatieverbetering of geïntegreerde ervaring. Zorg ervoor dat u duidelijke doelstellingen documenteert voor uw POC en de criteria waarmee het succes wordt gedefinieerd. Stel uzelf de volgende vragen:
- Wat wilt u als uitvoer van uw POC?
- Wat gaat u doen met deze uitvoer?
- Wie gebruikt de uitvoer?
- Wat definieert een succesvolle POC?
Houd er rekening mee dat een POC een korte en gerichte inspanning moet zijn om snel een beperkte set concepten en mogelijkheden te bewijzen. Deze concepten en mogelijkheden moeten representatief zijn voor de algehele workload. Als u een lange lijst met te bewijzen items hebt, wilt u mogelijk meer dan één POC plannen. In dat geval definieert u poorten tussen de POC's om te bepalen of u wilt doorgaan met de volgende. Gezien de verschillende professionele rollen die Spark-pools en -notebooks in Azure Synapse kunnen gebruiken, kunt u ervoor kiezen om meerdere POC's uit te voeren. Eén POC kan zich bijvoorbeeld richten op vereisten voor de rol data engineering, zoals opname en verwerking. Een andere POC kan zich richten op machine learning-modelontwikkeling (ML).
Als u uw POC-doelen beschouwt, stelt u zich de volgende vragen om u te helpen de doelstellingen vorm te geven:
- Migreert u vanuit een bestaand big data- en advanced analytics-platform (on-premises of in de cloud)?
- Migreert u, maar wilt u zo weinig mogelijk wijzigingen aanbrengen in bestaande opname en gegevensverwerking? Bijvoorbeeld een Spark naar Spark-migratie of een Hadoop/Hive-migratie naar Spark.
- Migreert u, maar wilt u onderweg een aantal uitgebreide verbeteringen uitvoeren? Schrijf mapReduce-taken bijvoorbeeld opnieuw als Spark-taken of converteer verouderde RDD-code naar dataframe-/gegevenssetcode.
- Bouwt u een volledig nieuw big data- en advanced analytics-platform (greenfield-project)?
- Wat zijn uw huidige pijnpunten? Bijvoorbeeld schaalbaarheid, prestaties of flexibiliteit.
- Welke nieuwe zakelijke vereisten moet u ondersteunen?
- Wat zijn de SLA's waaraan u moet voldoen?
- Wat zijn de workloads? Bijvoorbeeld ETL, batchverwerking, stroomverwerking, machine learning-modeltraining, analyse, rapportagequery's of interactieve query's?
- Wat zijn de vaardigheden van de gebruikers die eigenaar zijn van het project (moet de POC worden geïmplementeerd)? Bijvoorbeeld PySpark versus Scala-vaardigheden, notebook versus IDE-ervaring.
Hier volgen enkele voorbeelden van poc-doelinstelling:
- Waarom doen we een POC?
- We moeten weten dat de gegevensopname en verwerkingsprestaties voor onze werkbelasting voor big data voldoen aan onze nieuwe SLA's.
- We moeten weten of bijna realtime stroomverwerking mogelijk is en hoeveel doorvoer het kan ondersteunen. (Ondersteunt het onze bedrijfsvereisten?)
- We moeten weten of onze bestaande processen voor gegevensopname en transformatie geschikt zijn en waar verbeteringen moeten worden aangebracht.
- We moeten weten of we de uitvoeringstijden voor gegevensintegratie kunnen verkorten en hoeveel.
- We moeten weten of onze gegevenswetenschappers machine learning-modellen kunnen bouwen en trainen en waar nodig AI/ML-bibliotheken kunnen gebruiken in een Spark-pool.
- Voldoet de overstap naar Synapse Analytics in de cloud aan onze kostendoelen?
- Tot slot van deze POC:
- We hebben de gegevens om te bepalen of aan onze prestatievereisten voor gegevensverwerking kan worden voldaan voor zowel batch- als realtime streaming.
- We hebben de opname en verwerking van al onze verschillende gegevenstypen (gestructureerd, semi- en ongestructureerd) getest die onze use cases ondersteunen.
- We hebben enkele van onze bestaande complexe gegevensverwerking getest en kunnen het werk identificeren dat moet worden voltooid om onze portfolio met gegevensintegratie naar de nieuwe omgeving te migreren.
- We hebben gegevensopname en -verwerking getest en hebben de gegevenspunten om de inspanning te schatten die nodig is voor de eerste migratie en belasting van historische gegevens, en om de inspanning te schatten die nodig is voor het migreren van onze gegevensopname (Azure Data Factory (ADF), Distcp, Databox of anderen.
- We hebben gegevensopname en -verwerking getest en kunnen bepalen of aan onze ETL/ELT-verwerkingsvereisten kan worden voldaan.
- We hebben inzicht gekregen om een betere schatting te maken van de inspanning die nodig is om het implementatieproject te voltooien.
- We hebben schaal- en schaalopties getest en beschikken over de gegevenspunten om ons platform beter te configureren voor betere prijs-prestatie-instellingen.
- We hebben een lijst met items die mogelijk meer tests nodig hebben.
Het project plannen
Gebruik uw doelstellingen om specifieke tests te identificeren en de uitvoer te leveren die u hebt geïdentificeerd. Het is belangrijk om ervoor te zorgen dat u ten minste één test hebt om elk doel en de verwachte uitvoer te ondersteunen. Identificeer ook specifieke gegevensopname, batch- of stroomverwerking en alle andere processen die worden uitgevoerd, zodat u een zeer specifieke gegevensset en codebasis kunt identificeren. Met deze specifieke gegevensset en codebasis wordt het bereik van de POC gedefinieerd.
Hier volgt een voorbeeld van het benodigde specificiteitsniveau in de planning:
- Doel A: We moeten weten of aan onze vereiste voor gegevensopname en verwerking van batchgegevens kan worden voldaan onder onze gedefinieerde SLA.
- Uitvoer A: We hebben de gegevens om te bepalen of onze batchgegevensopname en -verwerking aan de vereisten voor gegevensverwerking en SLA kunnen voldoen.
- Test A1: Het verwerken van query's A, B en C wordt geïdentificeerd als goede prestatietests, omdat ze vaak worden uitgevoerd door het data engineering-team. Ze vertegenwoordigen ook de algemene behoeften voor gegevensverwerking.
- Test A2: Het verwerken van query's X, Y en Z wordt geïdentificeerd als goede prestatietests, omdat deze bijna realtime vereisten voor stroomverwerking bevatten. Ze vertegenwoordigen ook de algemene behoeften voor stroomverwerking op basis van gebeurtenissen.
- Test A3: Vergelijk de prestaties van deze query's op verschillende schaal van het Spark-cluster (variërend aantal werkknooppunten, de grootte van de werkknooppunten, zoals kleine, middelgrote en grote uitvoerders) met de benchmark die is verkregen van het bestaande systeem. Houd rekening met de wet van afnemende rendementen ; het toevoegen van meer resources (door omhoog of uit te schalen) kan helpen om parallellisme te bereiken, maar er is een bepaalde limiet die uniek is voor elk scenario om de parallelle uitvoering te bereiken. Ontdek de optimale configuratie voor elke geïdentificeerde use-case in uw testfase.
- Doel B: We moeten weten of onze gegevenswetenschappers machine learning-modellen op dit platform kunnen bouwen en trainen.
- Uitvoer B: We hebben een aantal van onze machine learning-modellen getest door ze te trainen op gegevens in een Spark-pool of een SQL-pool, waarbij gebruik wordt gemaakt van verschillende machine learning-bibliotheken. Deze tests helpen bepalen welke machine learning-modellen naar de nieuwe omgeving kunnen worden gemigreerd
- Test B1: Specifieke machine learning-modellen worden getest.
- Test B2: Test de basisbibliotheken voor machine learning die worden geleverd met Spark (Spark MLLib) samen met een extra bibliotheek die kan worden geïnstalleerd in Spark (zoals scikit-learn) om te voldoen aan de vereiste.
- Doel C: We hebben gegevensopname getest en hebben de gegevenspunten:
- Schat de inspanning voor de eerste historische gegevensmigratie naar data lake en/of de Spark-pool.
- Plan een benadering voor het migreren van historische gegevens.
- Uitvoer C: We hebben de gegevensopnamesnelheid getest en vastgesteld die haalbaar is in onze omgeving en kunnen bepalen of onze gegevensopnamesnelheid voldoende is om historische gegevens tijdens het beschikbare tijdvenster te migreren.
- Test C1: Test verschillende benaderingen van historische gegevensmigratie. Zie Gegevens overdragen naar en van Azure voor meer informatie.
- Test C2: Identificeer de toegewezen bandbreedte van ExpressRoute en of er beperkingen zijn ingesteld door het infrateam. Zie Wat is Azure ExpressRoute? (Bandbreedteopties).
- Test C3: Test de gegevensoverdrachtsnelheid voor zowel online als offline gegevensmigratie. Zie Copy-activiteit handleiding voor prestaties en schaalbaarheid voor meer informatie.
- Test C4: Test de gegevensoverdracht van de data lake naar de SQL-pool met behulp van ADF, Polybase of de opdracht COPY. Zie Strategieën voor het laden van gegevens voor toegewezen SQL-pools in Azure Synapse Analytics voor meer informatie.
- Doel D: We hebben de gegevensopnamesnelheid van incrementeel laden getest en hebben de gegevenspunten om de gegevensopname- en verwerkingstijdvenster te schatten naar de data lake en/of de toegewezen SQL-pool.
- Uitvoer D: We hebben de opnamesnelheid van gegevens getest en kunnen bepalen of aan onze vereisten voor gegevensopname en verwerking kan worden voldaan met de geïdentificeerde benadering.
- Test D1: Test de dagelijkse opname en verwerking van gegevens bijwerken.
- Test D2: Test de verwerkte gegevensbelasting naar de toegewezen SQL-pooltabel vanuit de Spark-pool. Zie Azure Synapse Dedicated SQL Pool Connector voor Apache Spark voor meer informatie.
- Test D3: Voer het dagelijkse laadproces voor updates gelijktijdig uit tijdens het uitvoeren van query's van eindgebruikers.
Zorg ervoor dat u uw tests verfijnt door meerdere testscenario's toe te voegen. Met Azure Synapse kunt u eenvoudig verschillende schaal (variërend aantal werkknooppunten, grootte van de werkknooppunten zoals kleine, middelgrote en grote) testen om de prestaties en het gedrag te vergelijken.
Hier volgen enkele testscenario's:
- Spark-pooltest A: We voeren gegevensverwerking uit over meerdere knooppunttypen (klein, gemiddeld en groot) en verschillende aantallen werkknooppunten.
- Spark-pooltest B: We laden/ophalen verwerkte gegevens uit de Spark-pool naar de toegewezen SQL-pool met behulp van de connector.
- Spark-pooltest C: We laden/ophalen verwerkte gegevens uit de Spark-pool naar Azure Cosmos DB via Azure Synapse Link.
De POC-gegevensset evalueren
Selecteer een gegevensset om de tests te ondersteunen met behulp van de specifieke tests die u hebt geïdentificeerd. Neem de tijd om deze gegevensset te controleren. U moet controleren of de gegevensset uw toekomstige verwerking adequaat vertegenwoordigt in termen van inhoud, complexiteit en schaal. Gebruik geen gegevensset die te klein is (minder dan 1 TB), omdat deze geen representatieve prestaties levert. Gebruik daarentegen geen gegevensset die te groot is, omdat de POC geen volledige gegevensmigratie mag worden. Zorg ervoor dat u de juiste benchmarks ophaalt uit bestaande systemen, zodat u deze kunt gebruiken voor prestatievergelijkingen.
Belangrijk
Zorg ervoor dat u bij bedrijfseigenaren op eventuele obstakels controleert voordat u gegevens naar de cloud verplaatst. Identificeer eventuele beveiligings- of privacyproblemen of eventuele verborgen gegevens die moeten worden uitgevoerd voordat u gegevens naar de cloud verplaatst.
Een architectuur op hoog niveau maken
Op basis van de architectuur op hoog niveau van uw voorgestelde toekomstige statusarchitectuur identificeert u de onderdelen die deel uitmaken van uw POC. Uw toekomstige statusarchitectuur op hoog niveau bevat waarschijnlijk veel gegevensbronnen, talloze gegevensgebruikers, big data-onderdelen en mogelijk ai-gegevensgebruikers (machine learning en kunstmatige intelligentie). Uw POC-architectuur moet specifiek onderdelen identificeren die deel uitmaken van de POC. Belangrijk is dat alle onderdelen worden geïdentificeerd die geen deel uitmaken van de POC-test.
Als u Azure al gebruikt, identificeert u alle resources die u al hebt (Microsoft Entra ID, ExpressRoute en andere) die u tijdens de POC kunt gebruiken. Identificeer ook de Azure-regio's die uw organisatie gebruikt. Het is nu een goed moment om de doorvoer van uw ExpressRoute-verbinding te identificeren en om te controleren met andere zakelijke gebruikers dat uw POC een deel van die doorvoer kan verbruiken zonder nadelige gevolgen voor productiesystemen.
Zie Big data-architecturen voor meer informatie.
POC-resources identificeren
Identificeer met name de technische resources en tijdsverplichtingen die nodig zijn om uw POC te ondersteunen. Uw POC heeft het volgende nodig:
- Een bedrijfsvertegenwoordiger om toezicht te houden op vereisten en resultaten.
- Een expert op het gebied van toepassingsgegevens om de gegevens voor de POC te bronen en kennis te bieden van de bestaande processen en logica.
- Een expert op het gebied van Apache Spark- en Spark-pools.
- Een deskundige adviseur, om de POC-tests te optimaliseren.
- Resources die nodig zijn voor specifieke onderdelen van uw POC-project, maar niet noodzakelijkerwijs vereist voor de duur van de POC. Deze resources kunnen netwerkbeheerders, Azure-beheerders, Active Directory-beheerders, Azure Portal-beheerders en andere resources omvatten.
- Zorg ervoor dat alle vereiste Azure-services-resources zijn ingericht en dat het vereiste toegangsniveau wordt verleend, inclusief toegang tot opslagaccounts.
- Zorg ervoor dat u een account hebt met vereiste machtigingen voor gegevenstoegang om gegevens op te halen uit alle gegevensbronnen in het POC-bereik.
Tip
We raden u aan een deskundige adviseur in te schakelen om u te helpen met uw POC. De partnercommunity van Microsoft heeft wereldwijde beschikbaarheid van deskundige consultants die u kunnen helpen bij het beoordelen, evalueren of implementeren van Azure Synapse.
De tijdlijn instellen
Bekijk uw POC-planningsgegevens en bedrijfsbehoeften om een tijdsbestek voor uw POC te identificeren. Maak realistische schattingen van de tijd die nodig is om de POC-doelstellingen te voltooien. De tijd die nodig is om uw POC te voltooien, wordt beïnvloed door de grootte van uw POC-gegevensset, het aantal en de complexiteit van tests en het aantal interfaces dat moet worden getest. Als u een schatting maakt van de duur van uw POC langer dan vier weken, kunt u overwegen om het POC-bereik te verminderen om te focussen op de hoogste prioriteitsdoelen. Zorg ervoor dat u goedkeuring en toezegging krijgt van alle leadbronnen en sponsors voordat u doorgaat.
De POC in de praktijk brengen
U wordt aangeraden uw POC-project uit te voeren met de discipline en de nauwkeurigheid van elk productieproject. Voer het project uit volgens het plan en beheer van een wijzigingsaanvraagproces om onbeheerde groei van het bereik van de POC te voorkomen.
Hier volgen enkele voorbeelden van taken op hoog niveau:
Maak een Synapse-werkruimte, Spark-pools en toegewezen SQL-pools, opslagaccounts en alle Azure-resources die zijn geïdentificeerd in het POC-plan.
POC-gegevensset laden:
- Gegevens beschikbaar maken in Azure door gegevens uit de bron te extraheren of door voorbeeldgegevens te maken in Azure. Zie voor meer informatie:
- Test de toegewezen connector voor de Spark-pool en de toegewezen SQL-pool.
Bestaande code migreren naar de Spark-pool:
- Als u migreert vanuit Spark, is uw migratie-inspanning waarschijnlijk eenvoudig, gezien het feit dat de Spark-pool gebruikmaakt van de opensource Spark-distributie. Als u echter leverancierspecifieke functies gebruikt op basis van Spark-kernfuncties, moet u deze functies correct toewijzen aan de Spark-poolfuncties.
- Als u migreert van een niet-Spark-systeem, is uw migratie-inspanning afhankelijk van de complexiteit die hierbij betrokken is.
Voer de tests uit:
- Veel tests kunnen parallel worden uitgevoerd in meerdere Spark-poolclusters.
- Noteer uw resultaten in een verbruiksbare en gemakkelijk begrijpelijke indeling.
Bewaken voor probleemoplossing en prestaties. Zie voor meer informatie:
Bewaak gegevens scheefheid, tijdsverschil en gebruikspercentage van uitvoerders door het tabblad Diagnostisch van de geschiedenisserver van Spark te openen.
De POC-resultaten interpreteren
Wanneer u alle POC-tests hebt voltooid, evalueert u de resultaten. Begin met het evalueren of de POC-doelstellingen zijn gehaald en de gewenste uitvoer is verzameld. Bepaal of er meer tests nodig zijn of vragen die moeten worden aangepakt.