0511 874 590 50 info@agile-im.de

Apache Spark ist ein verteilbares Verarbeitungssystem, welches als Open Source verfügbar ist und seine Stärken bei großen Datenmengen ausspielt. Durch In-Memory-Caching und eine optimierte Ausführung wird eine hohe Performance erreicht. Weiterhin unterstützt es allgemeine Batch-Verarbeitung, Streaming-Analysen, Machine Learning, Graph-Datenbanken und Ad-hoc-Abfragen.

Auf dem Apache Spark Summit Europe in Brüssel (https://spark-summit.org/eu-2016/) Ende Oktober unter dem Motto „Big Data & Machine Learning at Scale“ konnten wir mit drei Teammitgliedern  in Workshops und Vorträgen vielfältige Eindrücke über den Stand der Dinge für unsere Projekte gewinnen. – Einige davon möchte ich hier teilen.

Apache Spark Summit Europe

Anwendungen

Nicht nur die Bandbreite, sondern auch Einsatzmöglichkeiten und Mehrwerte der vorgestellten Anwendungen waren beeindruckend.

lets-mmmooogle

Diese reichten von „Big Data for Dairy Cows“ (https://www.mmmooogle.com/) in der Landwirtschaft über Analysen von Videodaten auf emotionale Reaktionen von Probanden, Analysen komplexer Texte auf Rollen und Beziehungen (Autoren, Dokumente) bis hin zu Auswertung von Mobilfunk Profilen zur Analyse von Verkehrsströmen und verschiedensten Prognosen, z.B. von Preisen und Ausfällen von Weichen im niederländischen Zugverkehr. Drei aus meiner Sicht besonders spannende Lösungen will ich etwas detaillierter vorstellen:

Der Fachverlag Elsevier (https://www.elsevier.com/) stand vor der Aufgabe, aus einer großen Anzahl wissenschaftlicher Publikationen Mentor-Mentee Beziehungen zu ermitteln. Diese beruhen auf komplexen, historischen Informationen und entsprechende Trainingsdaten lagen nicht ohne weiteres vor. Daher wurden zunächst Heuristiken auf Basis einiger offensichtlicher Indikatoren entwickelt, um erste Einschätzungen in Form von Beziehungsgraphen zu ermitteln. Mit diesen wurden dann wiederum gestützte Machine Learning Verfahren trainiert und mit Hilfe von Kunden deren Ergebnisse in einem Online Verfahren validiert.

Infare Solutions (http://www.infare.com/), ein Anbieter von Lösungen für die Luftfahrt, wiederum führt auf Basis hochfrequenter Preisinformationen zu Flugtickets (mehrere Millionen Datensätze pro Tag) zunächst eine Dimensionsreduktion auf relevante Features durch. Da die Preisentwicklungen je nach Phase sehr unterschiedliche Muster aufweisen, werden diese zunächst über ein Clustering Verfahren gruppiert, bevor auf ihrer Basis Regressionsverfahren trainiert und Prognosen ermittelt werden. Dies bietet außerdem den Vorteil, eine bessere Verteilung der Berechnungen auf den verwendeten Rechner Cluster vornehmen und für jede Gruppe separat Verfahren und Parameter optimieren zu können.

Weichen stellen eine der wesentlichen Quellen von Störungen im Gleisbetrieb dar. Anhand einer Handvoll von Parametern unter anderem dem Spannungsverlauf lassen sich solche Störungen vorhersehen. Im Rahmen eines Pilotbetriebes sammelt ein Dienstleister der niederländischen Bahn daher seit einiger Zeit kontinuierlich diese Parameter per IoT ein, um Störungen möglichst vorausschauend vorher zusagen. Die Prognosequalität ist dabei hinsichtlich der frühzeitig erkannten Ausfälle schon recht hoch, weniger hinsichtlich der Fehlalarme. Da aber Ausfälle wesentlich mehr Kosten durch Betriebsstörungen und Vertragsstrafen verursachen als unnötige Technikereinsätze, stellt dies bereits einen hohen Mehrwert dar.

Ökosystem

Das Apache Spark Ökosystem besteht aus einer Vielzahl von Komponenten und der weltweit größten, sehr aktiven Big Data Community mit mehr als 1.000 Beitragenden aus über 250 Organisationen. Apache Spark selbst wird zum Beispiel von Netflix, eBay, Yahoo, Facebook, Swisscom und einigen großen deutschen Automobilherstellern eingesetzt. Weiterhin erfährt es breite Unterstützung aus der IT Industrie – z.B. von Nvidia, IBM und Google.

Einerseits bietet dieses Umfeld die Möglichkeit, verschiedene, sich zügig weiter entwickelnde Bausteine zu nutzen und intensiven Erfahrungsaustausch zu betrieben. – Die Kernkomponenten selbst sind Apache Spark SQL & Data Frames, Spark Streaming, MLib und GraphX.

Apache Spark

Größere, verwandte Projekte sind zum Beispiel SparkR (R Schnittstelle), Apache Mesos (Virtualisierung), Apache Kafka (Real Time Streaming) oder H2O (AI Plattform) und auf https://spark-packages.org/ findet sich ein von der Community betriebenes Verzeichnis von Zusatzlösungen. Für die Persistenz gibt es ebenfalls verschiedene Integrationen wie z.B. HDFS, Cassandra, HBase, Hive, MongoDB, Neo4J oder jede Hadoop Datenquelle.

Wichtig zu erwähnen ist noch, dass neben der Möglichkeit Apache Spark Cluster selber zu betreiben, die vorgefertigten, sehr flexibel konfigurierbaren und temporär nach Bedarf einsetzbaren Ressourcen der Amazon Web Services nutzbar sind. Hierbei ist eine nahtlose Integration und Nutzung direkt aus der Entwicklungsumgebung oder verschiedenen Notebooks (siehe unten) möglich.

Andererseits bedingt dieses Umfeld natürlich auch, dass vielfältiges Wissen benötigt wird und eine sorgfältige Evaluierung geeigneter Komponenten für den jeweiligen Anwendungsfall vorgenommen werden muss. Zudem sind Investitionssicherheit und Refactoring Aufwände eine gewisse Herausforderung – zumindest wenn man die jeweils neuesten Entwicklungen nutzen will oder muss (- Beispiel: Ablösung der Apache Spark RDD durch Data Frames).

Rollen & Vorgehensweisen

In diesem Umfeld haben sich für Big Data und Machine Learning Projekte spezielle Rollen heraus kristallisiert. Die üblichste Unterscheidung ist nach Business Analyst, Data Scientist und Data Engineer.

Big Data Roles

Der Business Analyst ist vor allem in den Fachabteilungen und auf Management Ebene beziehungsweise Kompetenzbereichen Strategie, Geschäftsmodell, Prozesse und Controlling verankert.

An diesen Themen und den entsprechenden Anforderungen knüpft der Data Scientist an, der seine Schwerpunkte aber in Feature Analyse sowie statistischen und Machine Learning Verfahren hat. Zusätzlich sollte auch über hinreichend Entwicklungskompetenz verfügen, um zumindest auf Basis verfügbarer Komponenten Experimente mit Daten und Verfahren durchführen und Prototypen neuer Algorithmen erzeugen zu können.

Der Aufbau geeigneter Systemlandschaften auf Basis der oben erwähnten Komponenten, die Realisierung komplexer programmatischer Feature Extraktionen und die Sicherstellung der Tauglichkeit für den produktiven Einsatz unter hoher Last sind schließlich die Aufgaben des Data Engineers. Auch dieser muss sich hinreichend in Statistik und Machine Learning auskennen.

Aufgrund der hohen Komplexität und der häufig hochfrequenten und iterativen Annäherung an das optimale Verfahren sind agile Vorgehensweisen natürlich prädestiniert für die Realisierung von Big Data / Machine Learning Anwendungen. Dies war auch der Tenor unser Gesprächspartner. – Allerdings gibt es hier einige Besonderheiten zu beachten, die wir in einem weiteren Artikel beleuchten werden.

Werkzeuge

Eine tiefgehende Darstellung aller relevanten und auf dem Summit behandelten Themenbereiche würde natürlich den Rahmen sprengen. Aber zumindest soll ein kurzer Abriss über die relevanten Themenbereiche gegeben werden:

Big Data Processing

 

Datenquellen anzapfen

Um aus verschiedensten Datenquellen ein internes, einheitlich verarbeitbares Format zu erzeugen, stehen die Spark Data Frames zur Verfügung. Dabei spielen nicht nur verschiedene Schnittstellen, Strukturen und Datentypen eine Rolle, sondern auch die Herausforderung, teilweise riesige Echtzeit Datenströme zu erfassen und hierauf schnell Vorhersagen zu treffen. Hierfür kommen verschiedene Komponenten für ETL und Streaming zum Einsatz.

Features erkunden und extrahieren

Bei der Lösung komplexer Anforderungen zur Mustererkennung und Vorhersage ist zunächst eine Analyse der Strukturen der Rohdaten und wo möglich die Erzeugung einfach zu bereinigender und ableitbarer Features notwendig (Feature Exploration und Extraktion). Hierzu muss über Adhoc Queries schnell auf bestimmte Datenbereiche zugegriffen werden und durch verschiedene Möglichkeiten zur Visualisierung (z.B. MatPlotLib, Vegas) eine intuitive Vorstellung über den Datenraum unterstützt werden. Ungestützte Verfahren zur Dimensionsreduktion (z.B. Clustering oder PCA) helfen dabei, Rauschen, Ausreißer und relevante Features zu erkennen.

Eine wichtige Rolle bei der schnellen Durchführung von Experimenten spielen zudem Notebooks, in denen zügig Daten bezogen, verarbeitet, visualisiert und mit erläuternden Kommentaren versehen werden können. Die Ausführung kann z.B. mit den Databricks Werkzeugen direkt durch Zuweisung eines vorkonfigurierten Clusters erfolgen.

Anwendungen realisieren

Die eigentliche Umsetzung von Big Data Anwendungen wird in Apache Spark (MLib) durch sehr elegant abstrahierte Konzepte unterstützt – im Wesentlichen: Pipelines bestehend aus Stages, die mit Transformers (Verarbeitung einzelner Datensätze) und Estimators (Ermittlung von Parametern über den gesamten Datenbestand) bestückt werden können. Anpassung („fitting“) von Modellen und Vorhersagen / Klassifizierungen („prediction“) erfolgen nach einem einheitlichen Schema. Darüber hinaus werden die Evaluierung der Prognosequalität (z.B. durch eine Confusion Matrix) sowie die automatische Optimierung der Hyperparameter von Modellen (z.B. Learnrate, Regularisierung) standardisiert unterstützt. Echtzeit Daten können nach Normierung der Zeitpunkte paralleler Ereignisse durch „Temporal Joins“ in einem Online Trainingsmodus verarbeitet werden. – In Summe können so verschiedenste Verfahren nach dem gleichen Schema erprobt und verglichen werden.

Da es notwendig ist, zügig und flexibel neue oder transformierte Features zu erzeugen, aber gleichzeitig auch gezielt Teilmengen und Zusammenhänge abzufragen, stellen Datenmodell, Datenzugriff und Persistierung eine gewisse Herausforderung dar. – Zum Beispiel können Data Frames direkt erweitert bzw. abgefragt werden und es wird eine implizite Schema Bildung unterstützt. Die Speicherung der Daten kann in Files sowie in SQL, NoSQL oder Graphen Datenbanken erfolgen.

Weitere relevante Themen seien hier nur kurz erwähnt: Unterstützung verteilter Verarbeitung durch geeignete Strukturierung der Algorithmen und Datenpakete, Skalierung durch Nutzung vieler Nodes sowie von GPUs, Monitoring und Performance Analyse zur Identifizierung und Beseitigung von Engpässen.

Fazit

Die Teilnahme an dieser Veranstaltung können wir grundsätzlich nur empfehlen. – Allerdings sollte aufgrund der Vielfalt an Themen und Vorträgen klar sein, wer und mit welchem Ziel hieran teilnimmt (- nun ja, das gilt ja immer 🙂 ). Ein kleines „aber“: aufgrund der relativ hochfrequenten Taktung und kurzen Vortragszeiten, darf man sich natürlich nicht zu viel Tiefe erwarten – allerdings standen die meisten Referenten gerne für eine Vertiefung und Vernetzung zur Verfügung – und ebenso waren viele bereits in der Materie erfahrene Teilnehmer dabei.

Über einen weitergehenden Austausch zu Machine Learning, Big Data und Apache Spark freuen wir uns – nehmen Sie gern Kontakt mit uns auf.

Bleiben Sie aktuell mit unseren AIM News!

Bleiben Sie aktuell mit unseren AIM News!

Wir senden Ihnen alle wichtigen AIM News und Blog-Updates.

Sie wurden erfolgreich angemeldet!