Apache Spark

Wat is Apache Spark?

Apache Spark is het open-source cluster computing framework voor grootschalige dataverwerking. Spark biedt een set van bibliotheken in drie verschillende programmeertalen (Java, Scala, Python) voor haar unified computing engine.

Wie werkzaam in de Data Wereld is, heeft een goede kans om te weten wat Spark is. Als je dat niet weet, is dat oké! Dan leggen we in dit artikel uit wat het is. 

Logo van Apache Spark

Ontdek Spark

Spark wordt door haar ontwikkelaars omschreven als een snelle en algemene oplossing voor grootschalige dataverwerking. Het snelle gedeelte betekent dat het sneller is dan voorgaande werkwijzen om te werken met Big Data, zoals de klassieke MapReduce aanpak.

Het geheim om sneller te kunnen werken is dat Spark op het geheugen (RAM) draait, waardoor de verwerking veel sneller gaat dan op de schijf (Disk). Het algemene principe houdt in dat het gebruikt kan worden voor meerdere zaken, zoals het uitvoeren van gedistribueerde SQL, het creëren van datapijplijnen, het invoeren van gegevens in een database, etc.. (lees libraries).

  • Libraries Spark bestaat uit een serie libraries die speciaal ontwikkeld zijn voor data science gerelateerde taken. Spark bevat libraries voor SQL (Spark SQL), Machine Learning (MLlib), Stream Processing (Spark Streaming en Structured Streaming) en Graph Analytics (GraphX).
  • Computing Engine – Spark zorgt voor het laden van gegevens uit verschillende filesystems en voert er berekeningen op uit, maar slaat zelf geen gegevens op. Spark opereert geheel in het geheugen, waardoor ongeëvenaarde prestaties en snelheid mogelijk zijn.
  • Unified – met Spark is het niet nodig om een applicatie uit meerdere API’s of systemen samen te voegen. Spark biedt voldoende ingebouwde API’s om de klus te klaren.
Apache Spark Open Source

De Spark applicatie

Iedere Spark-applicatie bestaat uit een Driver en een set van gedistribueerde werkprocessen (Executors).

Spark Driver

De Driver is verantwoordelijk voor de volgende taken:

  • Draait op een node in een cluster, of een client, en plant de uitvoering van een opdracht in met een clustermanager.
  • Analyseert, plant en verdeelt het werk over de Executors.
  • Bewaart metadata over de functionerende applicatie en toont deze op een overzichtelijke manier in een webinterface.
Weergave van Spark workloads

Spark Executors

De Executor is verantwoordelijk voor de volgende taken:

  • Executors voeren alle dataverwerking van een Spark opdracht uit.
  • Het opslaan van resultaten in het geheugen, deze blijven alleen op de schijf (Disk) bewaard wanneer dit specifiek wordt geïnstrueerd.
  • Stuurt de resultaten terug naar de Driver zodra deze zijn voltooid.