Apache Spark — Grundlagen

Stefan Preusler
2 min readJun 13, 2019

--

Was ist Spark?

Spark ist ein Open-Source Framework der Apache Foundation, das für die Analyse von großen Datenmengen verwendet wird. Es arbeitet mit verteilten Knoten (Clustern) und kann dadurch Jobs parallel durchführen. Der sogenannte “Driver Node” ist der Hauptknoten. Er verteilt Jobs und überwacht die “Worker Nodes”, die die Arbeit an den Daten verrichten

Damit arbeitet das Framework ähnlich wie das originäre Map Reduce Paradigma von Hadoop. Allerdings arbeitet Spark “In-Memory” basiert. Das bedeutet, dass die Daten im Arbeitsspeicher liegen und dadurch deutliche Geschwindigkeitsvorteile im Gegensatz zum festplattenbasierten Ansatz von Map Reduce auftreten. Zudem geht die Vielfalt an Operationen über das Map Reduce Paradigma hinaus.

Apache software foundation [Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0)]

Spark arbeitet polyglott und bietet Schnittstellen für Java, Scala und Python an. Die ursprüngliche Sprache in Spark ist Scala.

Welche Bibliotheken bietet Spark an?

Das Framework bietet von Hause aus eine Vielzahl von Bibliotheken für die Verarbeitung von Daten an. Für die Extraktion arbeitet Spark SQL für SQL ähnliche Anfragen. Machine Learning wird mittels der Bibliothek “MLlib” angeboten. GraphX bietet die Möglichkeit zum Bau von Graphen an. Mittels Spark Streaming ist es möglich, Datenstreams mithilfe von Echtzeitdaten aufzubauen.

Was ist RDD?

RDD steht für “Resilient Distributed Dataset” und repräsentatiert in Spark einen Datensatz, der über viele Cluster verteilt vorliegt. Es ist damit die zentrale Datenstruktur. Ein RDD kann von jeder Datenquelle wie zum Beispiel einer Textdatei oder Datenbank erzeugt werden. Die Daten können strukturiert oder unstrukturiert vorliegen und wird ebenfalls “In Memory” gespeichert. RDD sind unveränderbar. Das führt dazu, dass Änderungen nur über Transformationen des vorherigen RDD erzeugt werden kann. Es entstehen Graphen, die nacheinander durchlaufen werden können. Durch die Verteilung der Daten über die Spark Knoten und die Unveränderlichkeit der RDD wird die Fehlertoleranz minimiert.

Was sind die Nachteile von Spark?

“In Memory”-Datenhaltung ist vergleichsweise teuer. Apache Spark benötigt viel Arbeitsspeicher. Weiterhin hat das Framework kein eigenes Dateiverwaltungssystem. Damit ist es beispielsweise von Hadoop oder anderen Cloud Anbietern abhängig. Weiterhin ist die Auswahl der Algorithmen von MLlib vergleichsweise klein.

--

--

Stefan Preusler

Data Science | Python | Qlik Sense | Kaffee | Frankfurt | Kontakt: stefan-preusler.de