Außerdem: Neue Algorithmen für das Maschinelle Lernen

Apache Spark 2.1: Structured Streaming, neue SQL Features und Support für Apache Kafka

Dominik Mohilo
Apache Spark

© Apache Software Foundation

Für Version 2.1 des Cluster-Computing-Framework Apache Spark konzentrierte sich das Entwicklerteam vor allem auf Stabilität und Nutzerfreundlichkeit. Über 1200 Verbesserungen und Bugfixes beinhaltet das Update, dazu gehören unter anderem eine erweiterte SQL-Funktionalität und neue Algorithmen für das Maschinelle Lernen in R. Auch die native Unterstützung von Apache Kafka ist an Bord.

Das Big-Data-Framework Apache Spark erreichte im Sommer des vorigen Jahres Version 2.0 und sorgte damals vor allem für Verbesserungen in der Performanz. Mit der nun veröffentlichten Version 2.1.0 wurde Apache Spark für das Maschinelle Lernen auf Stand gebracht. Neben neuen Funktionen für SQL und Structured Streaming wurde auch diesmal wieder auf Usability gesetzt.

Neue Features

Structured Streaming

Eines der Highlights von Apache Spark 2.1.0 wurde bereits in der vorigen Version eingeführt: Structured Streaming. Durch das high-level API für das Erstellen von Continuous Applications soll es leichter werden, end-to-end Streaming-Anwendungen zu erstellen. Diese verflechten sich mit Datenspeicher, Serving-Systemen und Batch Jobs in konsistenter und fehlertoleranter Weise und können in Echtzeit auf Daten reagieren.

Unterstützt werden seit der Aktualisierung sämtliche Datei-basierten Formate und Features. Damit ist das Structured Streaming in der Lage, bspw. JSON, text, Avro oder CSV zu lesen und zu schreiben. Gleichzeitig sind Features wie partitionierte Dateien und das sogenannte Bucketing für alle Formate verfügbar.

Im Zuge dieses neuen Features wurde zudem die native Unterstützung von Apache Kafka implementiert. Dies beinhaltet das manuelle Zuweisen von Starting Offsets und Rate Limiting. Auch Event-time Watermarks, durch die Anwendungen dem System mitteilen können, welche Events als veraltet angesehen werden, sind Bestandteil von Spark 2.1.

Im Hinblick auf die Wartbarkeit ist es ab sofort möglich, sogenannte Global Unique Identifiers (GUID) zu vergeben. Die Verwendung von GUIDs ermöglicht es, Streaming Queries auch zwischen Restarts problemlos zu identifizieren. Das Query Status API beinhaltet in Spark 2.1.0 mehr Informationen und ein stabiles JSON-Format wird nun für alle Checkpoint-Logs verwendet.

SQL

Seit Version 2.0 rühmt sich die Crew rund um Spark damit, eine der funktionsreichsten und zum Standard konformen SQL Query Engines für die Big-Data-Sparte erschaffen zu haben. Diesen Schritt will das Team mit Spark 2.1 weitergehen und hat daher eine ganze Reihe von neuen Features für SQL in der aktualisierten Version untergebracht.

Zu den neuen Features gehören unter anderem das Konzept der Table-valued functions, binäre Literale und das Null ordering. Von Haus aus werden Cross Joins nicht mehr unterstützt, es sei denn, der Nutzer gibt den Wunsch darauf explizit durch ein Query mit einer CROSS JOIN-Syntax an. Inline-Tabellen wurden mit Version 2.0 von Spark eingeführt, nun können Nutzer sämtliche faltbare Ausdrücke nutzen, um hierfür Werte zu definieren.

MLlib & SparkR

Spark 2.1 bringt auch verbesserte Analysefähigkeiten. Um diese zu gewährleisten, wurden MLlib und GraphX mit neuen Algorithmen ausgestattet. Neue Algorithmen gibt es für das Locality-sensitive Hashing (LSH), die multinomiale logistische Regression und Personalized PageRank.

Durch die Unterstützung der folgenden Algorithmen ist SparkR laut Databricks die umfangreichste Bibliothek für verteiltes Machinelles Lernen mit R:

  • ALS
  • Isotonic Regression
  • Multilayer Perceptron Classifier
  • Random Forest
  • Gaussian Mixture Model
  • LDA
  • Multinomiale logistische Regression
  • Gradient Boosted Trees

Eine vollständige Liste mit Änderungen kann in JIRA gefunden werden, detaillierte Informationen zu den Highlights gibt es auf dem Blog von Databricks. Apache Spark 2.1.0 kann hier heruntergeladen werden.

Was ist Apache Spark?

Das AMPLab der University of California in Berkeley veröffentlichte 2010 ein neues Open-Source-Analysewerkzeug. Spark wurde 2013 zum Apache-Projekt und hat seither eine beeindruckende Entwicklung durchgemacht. Im Kern dreht sich bei Spark alles um die so genannten Resilient Distributed Datasets (RDD): verteilte, fehlertolerante, parallelisierbare Datenstrukturen. Diese können in Verbindung mit vielen verschiedenen Modulen genutzt werden, bspw. zur Verarbeitung von Graphen (GraphX), zum Streaming (Kafka, HDFS, Flume, ZeroMQ, Twitter) oder für Machine Learning basierend auf der MLib.

Neben Scala unterstützt Spark auch Python und R als Programmiersprachen. Das erleichtert Data Scientists den Einstieg, die bereits Erfahrung mit einem der beiden gesammelt haben. Wie Sie aus der Liste entnehmen können, ist Spark ein recht verbindungsfreudiges Framework und schafft es so, viele der bereits existierenden Datenquellen unter einem einheitlichen API zu vereinen. Das so entstandene Analyseframework hat sich schnell durchgesetzt.

Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.