Big Data: Parallelisierung von Daten mit Apache Spark
Apache Spark ist eine Software, die bei der Analyse von Daten für deren Verteilung bzw. Parallelisierung zuständig ist.
Heutzutage wird viel über die Parallelisierung von Daten auf verschiedenen Maschinen diskutiert, um Informationen schneller zu verarbeiten, aber was bedeutet das eigentlich? Die Parallelisierung von Daten auf verschiedenen Maschinen bedeutet nichts anderes, als die Daten in kleinere Dateien aufzuteilen. Jede dieser kleineren Dateien wird an eine andere Maschine gesendet. Auf diese Weise verarbeitet jede Maschine nur einen kleinen Teil der ursprünglichen Datei, anstatt die gesamte Datei zu analysieren.
Nehmen wir an, wir haben folgende Datei: consumos.csv mit 2 Spalten. Die erste gibt die Uhrzeit an, zu der die Daten erfasst wurden, und die zweite den Verbrauch in kW/h. Diese Datei enthält 10 verschiedene Zeitpunkte, zu denen Daten erfasst wurden. Wir erstellen einen Cluster mit Spark, wie in der folgenden Abbildung zu sehen ist:
Eine der Maschinen ist für die Steuerung der Operationen zuständig und wird als Master bezeichnet. Die beiden anderen Maschinen, die mit dem Master kommunizieren, werden als Worker bezeichnet. Wenn wir unseren Cluster beauftragen, die Summe der kW/h zu berechnen, geht dieser wie folgt vor:
- Teilt die Datei consumos.csv in 2 Dateien auf, particion1.csv und particion2.csv, jede mit 5 Zeilen
- Sendet die Datei particion1.csv an eine Maschine im Cluster und die Datei particion2.csv an die andere
- Jede Maschine im Cluster bildet die Summe der zweiten Spalte und sendet das Ergebnis an den Master zurück
- Sobald der Master die Ergebnisse jeder Maschine erhalten hat, addiert er die beiden erhaltenen Werte
- Spark gibt die Gesamtsumme der Verbrauchsspalte zurück.
Wenn wir nun den Durchschnittsverbrauch berechnen möchten, gibt jede Maschine wie zuvor die Summe zurück und zusätzlich die Anzahl der Zeilen der von ihr analysierten Datei. In unserem Beispiel würde wie folgt vorgegangen:
- Die Maschine, die die Datei particion1.csv verarbeitet, würde eine Verbrauchssumme von 0,981 und die Anzahl der analysierten Zeilen zurückgeben: 5
- Die Maschine, die die Datei particion2.csv verarbeitet, würde eine Verbrauchssumme von 0,864 und die Anzahl der analysierten Zeilen zurückgeben: 5.
- Die Master-Maschine addiert die Anzahl der von jeder Maschine gesendeten Zeilen sowie jede der von den Maschinen erhaltenen Summen und führt folgende Division durch:
Sehen wir uns grafisch an, wie der Durchschnittsverbrauch berechnet werden würde:
Wir können also festhalten, wie viel Einfachheit und Geschwindigkeit uns Spark bei Problemen mit großen Datenmengen bietet. Teile und herrsche!