Im Vergleich zu Vor­gän­gern wie Hadoop oder zu Kon­kur­ren­ten wie PySpark zeichnet sich Apache Spark durch be­ein­dru­ckend schnelle Per­for­mance aus – einer der wich­tigs­ten Aspekte bei der Abfrage, Ver­ar­bei­tung und Analyse großer Da­ten­men­gen. Als Big-Data- und In-Memory-Analytics-Framework bietet Spark zahl­rei­che Vorteile für Da­ten­ana­ly­sen, Machine Learning, Data Streaming und SQL.

Was ist Apache Spark?

Apache Spark, das Da­ten­ana­ly­se-Framework aus Berkeley, gilt in­zwi­schen als eine der be­lieb­tes­ten Big-Data-Platt­for­men weltweit und ist ein „Top-Level Project“ der Apache Software Foun­da­ti­on. Die Analytics Engine dient zur gleich­zei­ti­gen Ver­ar­bei­tung großer Da­ten­men­gen und Da­ten­ana­ly­se­an­wen­dun­gen in ver­teil­ten Com­pu­ter­clus­tern. Spark wurde ent­wi­ckelt, um den An­for­de­run­gen von Big Data hin­sicht­lich Re­chen­ge­schwin­dig­kei­ten, Er­wei­ter­bar­keit und Ska­lier­bar­keit gerecht zu werden.

Hierzu bietet es in­te­grier­te Module, die für Cloud Computing, Machine Learning, KI-An­wen­dun­gen sowie Streaming- und Graph-Daten viele Vorteile bieten. Die Engine findet aufgrund ihrer Leis­tungs­stär­ke und Ska­lier­bar­keit selbst bei Groß­an­bie­tern wie Netflix, Yahoo und eBay Anwendung.

Was macht Apache Spark besonders?

Apache Spark ist eine deutlich schnel­le­re und leis­tungs­stär­ke­re Engine als Apache Hadoop oder Apache Hive. Es ver­ar­bei­tet Aufträge im Vergleich zu Hadoops MapReduce 100-mal schneller, wenn die Ver­ar­bei­tung im Speicher statt­fin­det, und 10-mal schneller, wenn sie auf der Fest­plat­te geschieht. Un­ter­neh­men bietet Spark somit eine kos­ten­re­du­zie­ren­de und ef­fi­zi­enz­stei­gern­de Per­for­mance.

Besonders in­ter­es­sant an Spark ist jedoch die Fle­xi­bi­li­tät. So lässt sich die Engine nicht nur ei­gen­stän­dig, sondern auch in per YARN ge­steu­er­ten Hadoop-Clustern ausführen. Zudem er­mög­licht sie Ent­wick­le­rin­nen und Ent­wick­lern, in ver­schie­de­nen Pro­gram­mier­spra­chen An­wen­dun­gen für Spark zu schreiben. Nicht nur SQL, sondern auch Python, Scala, R oder Java kommen dazu in Frage.

Weitere Be­son­der­hei­ten an Spark: Es muss nicht auf dem Hadoop-File-System auf­ge­setzt werden, sondern kann ebenso mit anderen Da­ten­platt­for­men wie AWS S3, Apache Cassandra oder HBase betrieben werden. Zudem ver­ar­bei­tet es bei Angabe der Da­ten­quel­le sowohl Batch-Prozesse wie unter Hadoop als auch Stream-Daten und ver­schie­de­ne Workloads mit nahezu iden­ti­schem Code. Mit einem in­ter­ak­ti­ven Ab­fra­ge­pro­zess lassen sich somit aktuelle und his­to­ri­sche Echt­zeit­da­ten inklusive Analyse mehr­schich­tig auf Fest­plat­te und Memory verteilt sowie parallel ver­ar­bei­ten.

Wie funk­tio­niert Spark?

Sparks Funk­ti­ons­wei­se basiert auf dem hier­ar­chi­schen Primary-Secondary-Prinzip (veraltet auch noch als Master-Slave-Prinzip bekannt). Hierzu dient der Spark-Treiber als vom Cluster-Manager ver­wal­te­ter Master-Knoten. Dieser wiederum steuert die Slave-Knoten und leitet Da­ten­ana­ly­sen an den Client weiter. Die Ver­tei­lung und Über­wa­chung von Aus­füh­run­gen und Abfragen erfolgt über den vom Spark-Treiber er­stell­ten Spark­Con­text, der mit Cluster-Managern, wie sie Spark, YARN, Hadoop oder Ku­ber­netes bieten, ko­ope­riert. Hierbei werden zudem Resilient Dis­tri­bu­ted Datasets (RDDs) ge­schaf­fen.

Welche Res­sour­cen für das Abfragen oder Speichern von Daten zum Einsatz kommen oder wohin ab­ge­frag­te Daten gesendet werden, bestimmt Spark. Indem die Engine Daten direkt im Ar­beits­spei­cher von Server-Clustern dynamisch ver­ar­bei­tet, reduziert es die Latenz und bietet eine sehr schnelle Per­for­mance. Hinzu kommen parallele Ar­beits­schrit­te und die Nutzung vir­tu­el­ler sowie phy­si­scher Speicher.

Apache Spark ver­ar­bei­tet Daten zudem aus ver­schie­de­nen Da­ten­spei­chern. Dazu zählen das Hadoop Dis­tri­bu­ted File System (HDFS) und re­la­tio­na­le Da­ten­spei­cher wie Hive oder NoSQL-Da­ten­ban­ken. Hinzu kommt die per­for­man­cestei­gern­de In-Memory- oder die fest­plat­ten­sei­ti­ge Ver­ar­bei­tung – je nachdem, wie groß be­tref­fen­de Da­ten­sät­ze sind.

RDDs als verteilte, feh­ler­to­le­ran­te Da­ten­sät­ze

Resilient Dis­tri­bu­ted Datasets bilden eine wichtige Grundlage in Apache Spark, um struk­tu­rier­te oder un­struk­tu­rier­te Daten zu ver­ar­bei­ten. Dabei handelt es sich um feh­ler­to­le­ran­te Ag­gre­ga­tio­nen von Daten, die Spark per Clus­te­ring auf Server-Cluster verteilt und parallel ver­ar­bei­tet oder in Da­ten­spei­cher ver­schiebt. Auch die Wei­ter­ga­be an andere Ana­ly­se­mo­del­le ist möglich. Da­ten­sät­ze in RDDs un­ter­tei­len sich in logische Par­ti­tio­nen, die sich durch Trans­for­ma­tio­nen und Aktionen abrufen, neu erstellen oder be­ar­bei­ten sowie berechnen lassen.

Tipp

Mit Linux Hosting von IONOS nutzen Sie eine Datenbank nach Ihren Be­dürf­nis­sen – flexibel ska­lier­bar, mit SSL und DDoS-Schutz sowie sicheren deutschen Servern.

Da­ta­Frames und Datasets

Weitere Da­ten­ty­pen, die Spark ver­ar­bei­tet, nennen sich Da­ta­Frames und Datasets. Bei Da­ta­Frames handelt es sich um APIs als in Zeilen und Spalten struk­tu­rier­te Da­ten­ta­bel­len. Datasets wiederum sind eine Da­ta­Frames-Er­wei­te­rung für eine ob­jekt­ori­en­tier­te Be­nut­zer­schnitt­stel­le zur Pro­gram­mie­rung. Vor allem im Zu­sam­men­hang mit der Machine Learning Library (MLlib) spielen Da­ta­Frames als API mit ein­heit­li­cher Struktur über Pro­gram­mier­spra­chen hinweg eine zentrale Rolle.

Welche Sprache nutzt Spark?

Die Ent­wick­lung von Spark erfolgte in Scala, die auch als Pri­mär­spra­che der Spark Core-Engine dient. Zu­sätz­lich bietet Spark Java- und Python-Kon­nek­to­ren. Vor allem für Data Science und Data En­gi­nee­ring mit Spark in Ver­bin­dung mit anderen Pro­gram­mier­spra­chen bietet Python viele Vorteile für eine effektive Da­ten­ana­ly­se. Spark un­ter­stützt zudem High-Level-API-Schnitt­stel­len für die Data-Science-Pro­gram­mier­spra­che R, die sich auf große Da­ten­sät­zen anwenden und für ma­schi­nel­les Lernen nutzen lässt.

Wo kommt Spark zur Anwendung?

Aufgrund der viel­fäl­ti­gen Spark-Bi­blio­the­ken und Da­ten­spei­cher, der mit vielen Pro­gram­mier­spra­chen kom­pa­ti­blen APIs und der ef­fek­ti­ven In-Memory-Ver­ar­bei­tung eignet sich Spark für ver­schie­dens­te Branchen. Kommt es darauf an, komplexe, große Da­ten­men­gen zu ver­ar­bei­ten, ab­zu­fra­gen oder zu berechnen, bietet Spark durch hohe Ge­schwin­dig­keit, Ska­lier­bar­keit und Fle­xi­bi­li­tät vor allem für Big-Data-An­wen­dun­gen großer Un­ter­neh­men eine starke Leistung. Beliebt ist Spark daher u. a. in der digitalen Werbung und im E-Commerce, in Fi­nanz­un­ter­neh­men zur Aus­wer­tung von Fi­nanz­da­ten oder für In­ves­ti­ti­ons­mo­del­le sowie für Si­mu­la­tio­nen, künst­li­che In­tel­li­genz und zur Trend­pro­gno­se.

Zu den wich­tigs­ten Aspekten für den Einsatz von Spark zählen:

  • Ver­ar­bei­tung, In­te­gra­ti­on und Sammlung von Da­ten­men­gen ver­schie­dens­ter Quellen und An­wen­dun­gen
  • In­ter­ak­ti­ve Abfrage und Analyse von Big Data
  • Aus­wer­tung von Data-Streaming in Echtzeit
  • Ma­schi­nel­les Lernen und künst­li­che In­tel­li­genz
  • Große ETL-Prozesse
Tipp

Pro­fi­tie­ren Sie von de­di­zier­ten Servern mit Intel- oder AMD-Pro­zes­so­ren an deutschen Stand­or­ten und sparen Sie sich eine eigene IT-Abteilung – mit Managed Servern von IONOS.

Wichtige Kom­po­nen­ten und Bi­blio­the­ken der Spark-Ar­chi­tek­tur

Zu den wich­tigs­ten Elementen der Spark-Ar­chi­tek­tur zählen:

Spark Core

Als Basis des gesamten Spark-Systems stellt Spark Core die grund­le­gen­den Spark-Funk­tio­nen bereit und verwaltet die Auf­ga­ben­ver­tei­lung, Da­ten­abs­trak­ti­on, Ein­satz­pla­nung und die Ein- und Aus­ga­be­pro­zes­se. Als Da­ten­struk­tur von Spark Core kommen über mehrere Server-Cluster und Rechner verteilte RDDs zum Einsatz. Zudem bildet es die Grundlage für Spark SQL, Bi­blio­the­ken, Spark Streaming sowie alle weiteren wichtigen Ein­zel­kom­po­nen­ten.

Spark SQL

Hierbei handelt es sich um eine besonders häufig genutzte Bi­blio­thek, mit der sich RDDs als SQL-Abfragen nutzen lassen. Spark SQL generiert zu diesem Zweck temporäre Da­ta­Frames-Tabellen. Mit Spark SQL können Sie auf ver­schie­de­ne Da­ten­quel­len zugreifen, mit struk­tu­rier­ten Daten arbeiten sowie Da­ten­ab­fra­gen über SQL und andere DataFrame-APIs nutzen. Darüber hinaus er­mög­licht Spark SQL die Ein­bin­dung der Da­ten­bank­sys­tem-Sprache HiveQL, um auf ein mit Hive ver­wal­te­tes Data Warehouse zu­zu­grei­fen.

Spark Streaming

Mit dieser High-Level-API-Funk­tio­na­li­tät lassen sich hoch­ska­lier­ba­re, feh­ler­re­sis­ten­te Data-Streaming-Funk­tio­nen nutzen und kon­ti­nu­ier­li­che Da­ten­strö­me in Echtzeit ver­ar­bei­ten oder dar­stel­len. Aus den Da­ten­strö­men generiert Spark einzelne Pakete für Da­ten­ak­tio­nen. Auch trai­nier­te Machine-Learning-Modelle können somit in Da­ten­strö­men genutzt werden.

MLIB Machine Learning Library

Diese ska­lier­ba­re Spark-Bi­blio­thek bietet Machine-Learning-Code zur Anwendung er­wei­ter­ter sta­tis­ti­scher Prozesse in Server-Clustern oder zur Ent­wick­lung von Ana­ly­se­an­wen­dun­gen. Darin enthalten sind gängige Lern­al­go­rith­men wie Clus­te­ring, Re­gres­si­on, Klas­si­fi­zie­rung und Emp­feh­lung, Workflow-Dienste, Mo­dell­be­wer­tun­gen, lineare verteilte Sta­tis­ti­ken und Algebra- oder Feature-Trans­for­ma­tio­nen. Mit MLlib lässt sich ma­schi­nel­les Lernen effektiv skalieren und ver­ein­fa­chen.

GraphX

Die Spark API GraphX dient zur par­al­le­len Graph-Be­rech­nung und vereint ETL, in­ter­ak­ti­ve Graph-Ver­ar­bei­tung und ex­plo­ra­ti­ve Analysen.

Bild: Die Spark-Architektur als Schaubild
Für die Ver­ar­bei­tung und Abfrage großer Da­ten­men­gen bietet Spark Ihrem Un­ter­neh­men viele Vorteile.

Wie ist Apache Spark ent­stan­den?

Die Ent­wick­lung von Apache Spark erfolgte im Jahr 2009 an der Uni­ver­si­ty of Ca­li­for­nia, Berkeley im Rahmen des AMPlabs. Seit 2010 steht Spark als Open-Source-Lizenz der Öf­fent­lich­keit kostenlos zur Verfügung. Die Wei­ter­füh­rung und Op­ti­mie­rung von Spark begann 2013 durch die Apache Software Foun­da­ti­on. Die Po­pu­la­ri­tät und das Potenzial des Big-Data-Frame­works sorgte dafür, dass die ASF im Februar 2014 Spark zum „Top-Level-Project“ erklärte. Im Mai 2014 wurde daraufhin die Spark-Version 1.0 ver­öf­fent­licht. Aktuell (Stand: April 2023) befindet sich Spark in der Version 3.3.2.

Der Zweck von Spark lag in der an­ge­streb­ten Be­schleu­ni­gung von Abfragen und Aufgaben in Hadoop-Systemen. Mit der Grundlage Spark Core er­mög­lich­te es durch verteilte Funk­tio­nen für Auf­ga­ben­über­tra­gung, Eingabe-Ausgabe-Funk­tio­na­li­tä­ten sowie In-Memory-Ver­ar­bei­tung, das bis dahin im Hadoop-Framework gängige MapReduce klar zu über­tref­fen.

Welche Vorteile bietet Apache Spark?

Für die schnelle Abfrage und Ver­ar­bei­tung großer Da­ten­men­gen bietet Spark folgende Vorteile:

  • Ge­schwin­dig­keit: Workloads lassen sich im Vergleich zu Hadoops MapReduce bis zu 100-mal schneller ver­ar­bei­ten und ausführen. Weitere Per­for­mance-Vorteile entstehen durch Un­ter­stüt­zung für Batch- und Stream­da­ten-Ver­ar­bei­tung, ge­rich­te­te azy­kli­sche Graphen, eine physische Aus­füh­rungs-Engine sowie die Ab­fra­ge­op­ti­mie­rung.
  • Ska­lier­bar­keit: Durch In-Memory-Ver­ar­bei­tung der auf Cluster ver­teil­ten Daten bietet Spark eine be­darfs­ge­rech­te flexible Ska­lier­bar­keit der Res­sour­cen.
  • Ein­heit­lich­keit: Spark dient als um­fas­sen­des Big-Data-Framework, das in einer Anwendung ver­schie­de­ne Funk­tio­nen und Bi­blio­the­ken vereint. Dazu zählen SQL-Abfragen, Da­ta­Frames, Spark Streaming, MLlib für ma­schi­nel­les Lernen und GraphX für Graph-Ver­ar­bei­tung. Hinzu kommt die Ein­bin­dung von HiveQL.
  • Nut­zer­freund­lich­keit: Dank be­nut­zer­freund­li­cher API-Schnitt­stel­len zu ver­schie­dens­ten Da­ten­quel­len sowie über 80 gängigen Ope­ra­to­ren zur Ent­wick­lung von An­wen­dun­gen bündelt Spark zahl­rei­che An­wen­dungs­mög­lich­kei­ten in einem Framework. Besonders praktisch ist auch die in­ter­ak­ti­ve Ver­wen­dung von Scala-, Python-, R- oder SQL-Shells zum Schreiben von Diensten.
  • Open-Source-Framework: Durch den Open-Source-Ansatz bietet Spark eine globale, aktive Community aus Ex­per­tin­nen und Experten, die Spark kon­ti­nu­ier­lich wei­ter­ent­wi­ckeln, Si­cher­heits­lü­cken schließen und für schnelle In­no­va­tio­nen sorgen.
  • Ef­fi­zi­enz­stei­ge­rung und Kos­ten­re­duk­ti­on: Da sich Spark auch ohne physische High-End-Ser­ver­struk­tu­ren nutzen lässt, bietet die Plattform für Big-Data-Analysen eine zugleich kos­ten­re­du­zie­ren­de und leis­tungs­stei­gern­de Funk­tio­na­li­tät – ins­be­son­de­re für re­chen­in­ten­si­ve Machine-Learning-Al­go­rith­men und komplexe parallele Da­ten­pro­zes­se.

Welche Nachteile hat Apache Spark?

Trotz aller Stärken weist auch Spark bestimmte Nachteile auf. Dazu zählt in erster Linie die Tatsache, dass Spark über keine in­te­grier­te Speicher-Engine verfügt und daher auf viele verteilte Kom­po­nen­ten an­ge­wie­sen ist. Durch die In-Memory-Ver­ar­bei­tung sind zudem sehr viel RAM er­for­der­lich, was bei man­geln­den Res­sour­cen die Per­for­mance be­ein­träch­ti­gen kann. Zudem erfordert die Anwendung von Spark eine längere Ein­ar­bei­tungs­zeit, um beim ei­gen­stän­di­gen Ein­rich­ten eines Apache-Web­ser­vers oder anderer Cloud-Struk­tu­ren mit Spark die Hin­ter­grund­pro­zes­se zu verstehen.

Zum Hauptmenü