Vonkenstadia - Leer de soorten en voordelen van vonkstadia

Inhoudsopgave:

Anonim

Overzicht van vonkstadia

Een fase in een uitvoeringsproces is niets anders dan een niveau waar elk van de taken doorheen moet. De hele vonktaak is verdeeld in vele fasen voor de efficiënte verwerking van gegevens. Elke taak wordt uitgevoerd in een afzonderlijke partitie.

Telkens wanneer een spark-jobaanvraag door de gebruiker bij Spark wordt ingediend, accepteert de Spark-driver deze en identificeert de verschillende soorten acties / transformaties die in de applicatie aanwezig zijn. Verder zullen deze bewerkingen worden gerangschikt in een stroomdiagram dat de DAG wordt genoemd. Een DAG (Directed Acyclic Graph) wordt gemaakt wanneer een actie of een transformatie wordt aangeroepen op de RDD die op zijn beurt de DAGScheduler aanroept.

De betekenis van DAG is als volgt:

  • Gericht: alle knooppunten zijn met elkaar verbonden waardoor een acyclische grafiek ontstaat. De volgorde hiervan wordt bepaald door de acties die op de RDD worden aangeroepen.
  • Acyclisch: de knooppunten zijn niet verbonden als een cyclische lus. Als een actie of transformatie eenmaal is voltooid, kan de oorspronkelijke waarde niet worden teruggezet.
  • Grafiek: het gehele patroon dat wordt gevormd door de randen en hoekpunten die in een specifiek patroon zijn gerangschikt, wordt een grafiek genoemd. Hoekpunten zijn niets anders dan de RDD's en de randen zijn de acties die op de RDD worden aangeroepen.

DAGScheduler is degene die de fasen verdeelt in een aantal taken. De DAGScheduler geeft de fase-informatie vervolgens door aan de clustermanager (YARN / Spark standalone) die de taakplanner activeert om de taken uit te voeren. Spark driver converteert het logische plan naar een fysiek uitvoeringsplan. Spark-taken worden uitgevoerd in de pipelining-methode waarbij alle transformatietaken worden gecombineerd in één fase.

transformaties

Er zijn 2 soorten transformaties die plaatsvinden:

1. Smalle transformaties : dit zijn transformaties waarvoor geen shuffling nodig is. Deze acties kunnen in een enkele fase worden uitgevoerd.

Voorbeeld: map () en filter ()

2. Brede transformaties : dit zijn transformaties die door verschillende partities moeten worden geschud. Daarom moeten er verschillende fasen worden gemaakt voor communicatie over verschillende partities.

Voorbeeld: ReduceByKey

Laten we een voorbeeld nemen voor een beter begrip van hoe dit werkt.

Voorbeeld: In dit voorbeeld zullen we zien hoe een eenvoudig aantal woorden werkt met Spark DAGScheduler.

  • val data = sc.textFile (“data.txt”)

Resultaat: data: org.apache.spark.rdd.RDD (String) = data.txt MapPartitionsRDD (46) op textFile op: 24

Eerst wordt een textFile-bewerking uitgevoerd om het gegeven invoertekstbestand van de HDFS-locatie te lezen.

  • data.flatMap (_. split (”“)). map (i => (i, 1)). reduceByKey (_ + _). collect

Resultaat: res21: Array ((String, Int)) = Array ()

Vervolgens wordt een flatMap-bewerking uitgevoerd om de regels in het hele invoerbestand in verschillende woorden te splitsen. Vervolgens wordt een kaartbewerking uitgevoerd om (sleutel, waarde) paren te vormen zoals (woord, 1) voor elk van de woorden. En de functie reduceByKey wordt opgeroepen om de som van de tellingen voor elk woord te vinden. Ten slotte zal de collectieve actie het eindresultaat opleveren door alle gegevens te verzamelen.

Tijdens dit programma worden 2 fasen gecreëerd door Spark omdat hier een transformatie wordt uitgevoerd. Terwijl de transformatiebewerking is voltooid, moet shuffling worden uitgevoerd omdat de gegevens tussen 2 of meer verschillende partities moeten worden geschud. Daarom wordt hiervoor een fase gemaakt en vervolgens een andere enkele fase voor de transformatietaak gemaakt.

Ook intern worden deze fasen onderverdeeld in taken. In dit voorbeeld is elke fase verdeeld in 2 taken, omdat er 2 partities zijn. Elke partitie voert een individuele taak uit.

Soorten vonkenstadia

Hier zijn de twee soorten vonkenstadia die hieronder worden gegeven

1. ShuffleMapStage

Dit is eigenlijk een tussenfase in het proces van DAG-uitvoering. De output van deze fase wordt gebruikt als de input voor verdere fase (n). De uitvoer hiervan is in de vorm van kaartuitvoerbestanden die later kunnen worden gebruikt door de taak te verminderen. Een ShuffleMapStage wordt als gereed beschouwd wanneer alle kaartuitgangen beschikbaar zijn. Soms kunnen de uitvoerlocaties ontbreken in gevallen waarin de partities verloren zijn of niet beschikbaar zijn.

Deze fase kan veel pijplijnbewerkingen bevatten, zoals map () en filter () voordat de shuffling wordt uitgevoerd. Interne registers outputLocs en _numAvailableOutputs worden door ShuffleMapStage gebruikt om het aantal shuffle map-uitgangen te volgen. Een enkele ShuffleMapStage kan vaak worden gebruikt voor verschillende taken.

2. ResultStage

Zoals de naam zelf al aangeeft, is dit de laatste fase in een Spark-taak die een bewerking uitvoert op een of meer partities van een RDD om het resultaat te berekenen. Initialisatie van interne registers en tellers gebeurt door ResultStage.

De DAGScheduler legt ontbrekende taken voor aan de ResultStage voor berekening. Voor de berekening vereist het verschillende verplichte parameters zoals stageId, stageAttempId, de broadcast-variabele van de geserialiseerde taak, partitie, voorkeurstaaklocaties, outputId, enkele lokale eigenschappen, TaskMetrics van die specifieke fase. Enkele van de optionele vereiste parameters zijn Taak-ID, Toepassing-ID en Toepassing-poging-ID.

Voordelen van Spark Stages

Hieronder staan ​​de verschillende voordelen van Spark Stages:

1. Dynamische toewijzing van executeurs

Door de Spark Job Event-tijdlijn te zien, kunnen we zien dat de toewijzing van executors dynamisch gebeurt. Dit betekent dat de executeurs worden opgeroepen vanuit het cluster, afhankelijk van de werklast tijdens de uitvoering van de taak. Het wordt dan weer vrijgegeven aan het cluster zodra zijn taak is voltooid. Dit bespaart het brontoewijzingsgeheugen en zorgt ervoor dat de andere applicaties die op hetzelfde cluster worden uitgevoerd de uitvoerders opnieuw kunnen gebruiken. Daardoor zal het totale clustergebruik toenemen en optimaal zijn.

2. Caching

RDD's worden in de cache opgeslagen tijdens de bewerkingen die erop worden uitgevoerd in elke fase en opgeslagen in het geheugen. Dit is handig bij het besparen van computertijd wanneer het eindresultaat vereist dat dezelfde RDD's opnieuw worden gelezen van HDFS.

3. Parallelle uitvoering

Vonkopdrachten die onafhankelijk van elkaar zijn, worden parallel uitgevoerd, tenzij en totdat er een herverdeling nodig is of de invoer van een fase afhankelijk is van de vorige uitvoer.

4. DAG-visualisatie

Dit is erg handig in geval van complexe berekeningen waarbij veel bewerkingen en hun afhankelijkheden zijn betrokken. Met deze DAG-visualisatie kan men gemakkelijk de stroom volgen en de prestatieblokkades identificeren. Ook kan men elk van de taken zien die door elke fase worden uitgevoerd door op de fasen te klikken die in deze visualisatie worden getoond. In deze uitgebreide weergave worden alle details van de RDD's getoond die bij deze fase horen.

5. Fouttolerantie

Vanwege de caching op RDD's, zal DAG een record hebben van elke actie die erop is uitgevoerd. Veronderstel dus dat in elk geval een RDD verloren is gegaan, deze gemakkelijk kan worden teruggevonden met behulp van DAG. Clusterbeheer kan worden gebruikt om de partitie te identificeren waarbij deze is verloren en dezelfde RDD kan opnieuw op dezelfde partitie worden geplaatst voor herstel van gegevensverlies.

Vanwege de bovengenoemde voordelen wordt Apache Spark veel gebruikt in plaats van de eerder gebruikte MapReduce. Spark-fasen zijn niets anders dan een uitgebreide versie van MapReduce. Omdat MapReduce vereist dat de gegevens meerdere keren moeten worden gelezen en naar de HDFS moeten worden geschreven, is Spark geïntroduceerd die deze acties in het geheugen uitvoert.

Conclusie

Daarom kunnen we concluderen dat Spark-fasen efficiënter zijn vanwege hun berekening in het geheugen, verhoogde verwerkingssnelheid, zelfs voor iteratieve verwerking.

Aanbevolen artikelen

Dit is een gids voor Spark Stages. Hier bespreken we de soorten transformaties en de soorten en voordelen van vonkstadia. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Hoe Spark te installeren
  2. Vonken streamen
  3. Carrière in Spark
  4. Spark Interview Vragen
  5. Overzicht en Top 6 componenten van Spark