Spark Summit Europe 2015

Keine Kommentare

Nach drei erfolgreichen Summits in San Francisco schwappt die Begeisterungswelle für Apache Spark nach Europa. Grund genug, sich selbst ein Bild vom “aktivsten Open-Source-Big-Data-Projekt” zu machen.

Für alle, die nur schnell wissen möchten, was sie verpasst haben: Am Ende des Artikels habe ich die wesentlichen Punkte zusammengefasst. Slides und Videos zu allen Talks gibt es übrigens auf der Homepage des Spark Summit.

Zum Einstieg ein Training

Vor der eigentlichen Konferenz gab es die Möglichkeit, an einem eintägigen Spark-Training teilzunehmen. Ich entschied mich für „Data Science with Apache Spark”. Das Training war insgesamt gut, das Material hervorragend. Nur der Hands-on-Teil litt unter der doch sehr großen Teilnehmerzahl. Die Schwerpunkte des Trainings lagen auf DataFrames und einer Einführung in Spark-ML.

Spark DataFrames sind von den gleichnamigen Strukturen aus R und Python inspiriert. Ein DataFrame ist grob gesagt ein RDD mit zusätzlichen Schemainformationen. Zur Manipulation der DataFrames gibt es eine an SQL angelehnte DSL. Durch die zusätzliche Struktur und die Einschränkung möglicher Manipulationen können Queries von Catalyst optimiert werden. Dadurch sind DataFrames im Allgemeinen performanter als RDDs.

Spark-ML ist ein sehr junges Mitglied der Spark-Familie. Es bietet selbst keine neue Funktionalität, sondern ist eine einheitliche API für die verschiedenen Machine-Learning-Algorithmen von MLlib. Wer das R-Paket caret kennt, fühlt sich schnell zu Hause. Während des Trainings wurde auch immer wieder die „alte“ Variante mit MLlib der „neuen“ Spark-ML Variante gegenübergestellt.

Jeder Teilnehmer bekam für die Dauer des Trainings Zugang zur Databricks-Plattform. Ich hatte vorher noch nicht damit gearbeitet und war beeindruckt von den Möglichkeiten und der Qualität dieses Angebots. Die Notebook-Funktionalität wirkte sehr ausgereift. Die direkte Einbindung der Spark-UI fand ich sehr gelungen.

Spark Training Continued – Der “Developer Track”

Quasi als Fortführung des Trainings konnten die Vorträge des Developer Track betrachtet werden. Hier gab es tiefere Informationen zur Verwendung von Spark und zu typischen Fehlern und Problemen – oft garniert mit Beispielen aus der Praxis.

Spark-UI – Wie erkenne ich, warum ein Job langsam ist?
Die erwähnte Integration der Spark-UI in die Databricks-Notebooks hilft natürlich nur, wenn man die Informationen der Spark-UI auch versteht und die nötigen Schlüsse daraus ziehen kann. Anhand einiger gelungener Beispiele wurde die Verwendung der Spark-UI erklärt und dabei auch auf die Performance-Vorteile der DataFrames im Vergleich zu RDDs eingegangen.

Backpressure für Spark Streaming
Bei Spark Streaming Jobs sollte immer darauf geachtet werden, dass die Verarbeitungszeit eines einzelnen (Mini-)Batches kleiner ist als das Intervall zwischen zwei (Mini-)Batches. Ist dies nicht der Fall, stauen sich unverarbeitete Batches an (was im schlimmsten Fall zu OutOfMemory-Fehlern führen kann). Um dem entgegenzuwirken, kann seit Spark 1.5 mit der (experimentellen) Konfigurationsoption spark.streaming.backpressure.enabled Backpressure aktiviert werden. Was in diesem Fall passiert, warum das nützlich ist und warum es einem trotzdem nicht die Arbeit abnimmt, seine Streaming-Jobs zu überwachen und die Konfiguration für Batch Size und Interval sinnvoll zu wählen, wurde von Gerard Maas und François Garillot mit vielen Beispielen erklärt.

Das Spark-Ökosystem

Bei Software spricht man ja gerne vom Ökosystem um die Kernkomponenten herum. Spark ist hierbei keine Ausnahme. Auf der Konferenz wurden einige sehr interessante Projekte vorgestellt, die man im Hinterkopf haben sollte. Meine persönlichen Highlights:

Notebooks
Das Databrick-Notebook konnte ich schon während des Trainings kennen lernen. Die Konferenz nutzte ich, um auch einen Eindruck der Open-Source-Alternativen zu bekommen.

Einen sehr guten Eindruck machte Apache Zeppelin. Allerdings merkt man dem Projekt an, dass es noch sehr jung ist. Es fehlt die Unterstützung von SparkR, es gibt keine Möglichkeit, Notebooks zu versionieren oder zu exportieren/importieren, und der verwendete Spark-Cluster muss hart vorkonfiguriert werden.

Das Spark-Notebook baut auf dem populären IPython (bzw. Jupyter) Notebook auf. Es enthält auch eine rudimentäre Clusterverwaltung. Zur Laufzeit kann ausgewählt werden, auf welchem Cluster ein Notebook ausgeführt werden soll. Standardmäßig an Bord ist auch ein Tachyon-Widget, mit dem der Inhalt des Tachyon-Clusters untersucht werden kann.

Michael Lex ist agiler Softwareentwickler bei codecentric. Neben der täglichen Arbeit mit Java EE oder Spring gilt sein besonderes Interesse dem weiten Feld der Datenanalyse, insbesondere Machine-Learning-Algorithmen.

Share on FacebookGoogle+Share on LinkedInTweet about this on TwitterShare on RedditDigg thisShare on StumbleUpon

Artikel von Michael Lex

Data Science

WM-Vorhersage – Das Finale

Data Science

Soccer Feature Madness

Kommentieren

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.