Neues Major Release des Cluster-Computing-Frameworks

Apache Spark 2.0 ist da: einfacher, schneller, smarter

Dominik Mohilo
Apache Spark

© Apache Software Foundation

Das Motto „einfacher, schneller, smarter“ wurde von den Machern des Cluster-Computing-Frameworks Apache Spark bereits im Zuge der Technical Preview zum aktuellen Major Release als richtungsweisend angegeben. An Apache Spark 2.0 arbeiteten über 300 Personen, um diesem hehren Ziel gerecht zu werden. Das Ergebnis sind über 2500 Patches, neue Features und Bugfixes für das Framework.

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 mittlerweile 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.

Apache Spark 2.0: Neue Features

Durch die Unterstützung von SQL2003 ist Spark SQL in der aktuellen Version fähig, sämtliche 99 TPC-DS-Queries laufen zu lassen. Auch der native SQL-Parser, welcher in Spark 2.0 ANSI-SQL und HIVE QL unterstützt, wurde verbessert. Erstellt man Builds ohne die Unterstützung von Hive, hat Spark SQL in der aktuellen Version dennoch beinahe die gesamte Bandbreite an Funktionen, mit Ausnahme der Hive-Konnektivität, Hive-UDFs und Script-Transformationen.

Lesen Sie auch: Apache Spark – Mehr als ein Hadoop-Ersatz

Spark 2.0 hat außerdem eine native CSV-Datenquelle an Bord, die auf dem spark-csv-Modul von Databricks basiert. Zu den weiteren Features gehören unter anderem ein Off-Heap-Speichermanagement für das Caching und die Ausführung von Laufzeiten sowie die Unterstützung eines Hive ähnlichen Bucketings.

SparkR

Für SparkR bringt die zweite Major Version von Spark drei neue von Usern definierte Funktionen: dapply, gapply und lapply. Die ersten beiden können für Partitions-basierte UDFs genutzt werden, etwa partitioniertes Model Learning. Mit lapply lassen sich hingegen Hyperparameter tunen.

Für das maschinelle Lernen mit R wurde der Algorithmus-Umfang vergrößert, zudem ist das Speichern und Laden nun für alle ML-Modelle verfügbar. Spark 2.0 spendiert den generalisierten linearen Modellen zusätzlich mehr Verknüpfungsfunktionen und Families.

Blockchain Whitepaper 2018

Free: Blockchain Technology Whitepaper

If building a blockchain from scratch is beyond your current scope, the blockchain technology whitepaper is worth a look. Experts from the field share their know-how, tips and tricks, development advice, and strategy for becoming a blockchain master.

Neue und aktualisierte APIs

Die neuen und aktualisierten APIs sind mit eine der größten Änderungen für das aktuelle Major Release. DataFrame und Dataset wurden für Java und Scala zusammengelegt, für Python und R ist DataFrame nun das Programmierinterface der Wahl. Auch in MLib ist das DataFrame-basierte API das primäre API, während das RDD-basierte API in den Wartungsmodus geschoben wurde.

SparkSession ist der neue Einstiegspunkt für DataFrame- und Dataset-APIs und ersetzt damit SQLContext und HiveContext. Beide Einstiegspunkte werden allerdings für die Rückwärtskompatibilität weiterhin Teil von Apache Spark sein. Mit dem neuen Einstiegspunkt kommt auch ein neues und moderneres Konfigurations-API für SparkSession.

Wie üblich, sind die APIs für die gesamte Release-Linie 2.X stabil. Dies bedeutet, dass sämtliche Anwendungen, die auf die APIs von Version 2.0.0 abgestimmt werden, keine Kompatibilitätsprobleme mit der 2.X-Linie haben werden.

Die APIs sollen allerdings ohnehin sehr ähnlich zu denen der Vorgängerreihe sein, dennoch gilt es, die Breaking Changes gerade im Bereich der APIs in jedem Fall zu beachten.

Verbesserte Performance

Performanz ist wichtig. Daher bescheren die Entwickler den Nutzern in Spark 2.0 mit der Whole-stage code generation ein wertvolles neues Feature. Optimierter Bytecode wird dabei an die Laufzeit ausgegeben, der das gesamte Query in eine einzige Funktion zusammenfasst. Virtuelle Funktions-Calls werden so eliminiert und die CPU-Register vorteilhaft für das Zwischenspeichern von Daten genutzt.

In der folgenden Tabelle ist zu sehen, wie leistungsstark die Whole-stage code generation arbeiten soll:

cost per row (single thread)
primitive Spark 1.6 Spark 2.0
filter 15ns 1.1ns
sum w/o group 14ns 0.9ns
sum w/ group 79ns 10.7ns
hash join 115ns 4.0ns
sort (8-bit entropy) 620ns 5.3ns
sort (64-bit entropy) 620ns 40ns
sort-merge join 750ns 700ns

In dem Graphen von Databricks kann man ziemlich gut die Zeitunterschiede zwischen Spark 1.6 und Spark 2.0 bei End-to-End-Queries ablesen (in diesem Fall sind es TPC-DS-Queries).

Vergleich des Zeitaufwands bei der Bearbeitung von TPC-DS-Queries / Quelle: Databricks

Vergleich des Zeitaufwands bei der Bearbeitung von TPC-DS-Queries / Quelle: Databricks

Entfernte Funktionen und Unterstützungen

Für Nutzer der Spark-Implementierung von Googles Framework Pregel gibt es schlechte Nachrichten: Bagel wird ab Version 2.0 nicht mehr unterstützt und wurde entfernt. Gleiches gilt für alle Versionen von Hadoop, die jünger sind als Version 2.2, sowie für HTTPBroadcast und weniger genutzte Streaming-Connectors (inklusive Twitter, Akka, MQTT und ZeroMQ).

Zukünftig könnte der Support für Java 7 und Python 2.6 genau wie der fine-grained-Modus in Apache Mesos vollständig aufgegeben werden. Diese Features sind auf der Deprecated-Liste des aktuellen Updates gelandet.

Eine vollständige Liste mit Änderungen, Entsorgungen und neuen Features, inklusive Querverweisen auf Hintergrundinformationen zu den einzelnen Punkten, können Interessierte auf der Hompage von Spark finden.

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

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: