© Mildenmi/Shutterstock.com
Apache Spark in der Cloud mit HDInsight

Der Big-Data-Funke springt über


Eines der beliebtesten Themen im Big-Data-Umfeld ist Apache Spark. Spark ist eine Processing Engine, die oftmals mit Hadoop betrieben wird. Hierbei gibt es das Versprechen, dass sich die Performance im Vergleich zu klassischen MapReduce-Ansätzen stark verbessert. Doch was genau ist nun eigentlich Apache Spark?

Apache Spark [1] ist einer der Projekttypen, die man im Hadoop-Cluster bei HDInsight auswählen kann. Vor allem hinsichtlich der Performance hat Spark Pluspunkte aufzuweisen. Nicht zuletzt CloudSort, die Benchmark für verteilte Algorithmen in der Cloud, spricht eine klare Sprache. Hierbei wird gemessen, wie viel die Sortierung von einem Terabyte Daten kostet. Spark „verursacht“ hierfür 1,44 Dollar [2], was enorm günstig und effizient ist. Man mag diesbezüglich zwar noch behaupten, dass solche Benchmarks theoretischer Natur sind, doch Spark hat sich auch bereits in Kundenprojekten seitens Microsoft bewiesen. In diesem Rahmen konnte bei OneTax die Anzahl der Nodes im HDInsight-Cluster halbiert werden, was enormen Kosteneinsparungen [3] in Kundenprojekten entspricht.

Spark hat ferner die gleichen Vorteile wie Hadoop hinsichtlich der Skalierung: Es skaliert linear zur Last. Der aktuell größte Cluster auf Basis von Spark besteht aus 8 000 physischen Knoten. Die technische Grundlage für Spark bietet hierbei die Programmiersprache Scala, die eine Weiterentwicklung von Java ist. Spark-Programme werden deshalb meist in Scala oder Java entwickelt. In den letzten Jahren hat sich jedoch auch Python als wichtiger Bestandteil des Spark-Projekts etabliert. Spark selbst ist jedoch nicht als Konkurrent zu Hadoop zu verstehen: Spark läuft als YARN-Anwendung in Hadoop und ist damit ein wesentlicher Bestandteil von Hadoop. Ferner verwendet Spark die Daten, die in HDFS abgespeichert wurden.

Die Spark-Architektur und -Komponenten

Die vier Hauptkomponenten von Spark sind Abbildung 1 zu entnehmen. Hierbei handelt es sich um Spark SQL, Spark Streaming, MLlib und GraphX. Jede dieser Komponenten setzt den Fokus auf unterschiedliche Dinge.

meir-huber_spark_1.tif_fmt1.jpgAbb. 1: Apache Spark und Komponenten

Spark SQL bietet eine Datenzugriffssyntax, wie wir sie bereits aus SQL kennen. Damit lassen sich Datenanalysen mit SQL-Befehlen erweitern, was die Arbeit oftmals erleichtert. In Scala (oder einer der anderen unterstützten Programmiersprachen für Spark) kann man damit einfach den Scala-Code mit SQL erweitern. Spark SQL bietet JDBC und OCBC an, was wiederum die Integration in Anwendungen wesentlich vereinf...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang