Business Application Research Center

Experten für Business Intelligence, Analytics, Big Data, CRM und ECM

BARC-Newsletter

Apache Spark für Analysen auf Hadoop

RssRss

21.08.2015

Apache Spark für Analysen auf Hadoop

Die Open-Source-Datenmanagementplattform für Big Data „Hadoop“ ist inzwischen ein De-facto-Standard im Markt. Neben den reinen Distributionen für Hadoop, wie Cloudera, Hortonworks und MapR bieten auch die „Großen“ der IT-Branche entweder eigene Distributionen oder arbeiten mit den bereits existierenden Distributoren zusammen (BARC hat kürzlich in einer eigenen Untersuchung die marktführenden Hadoop-Distributionen analysiert und eingeordnet). IBM beispielsweise bietet mit „InfoSphere BigInsight“ eine durch eigene Funktionen und Features erweiterte Hadoop-Distribution. Oracle und Microsoft dagegen arbeiten entweder mit Cloudera oder Hortonworks zusammen. EMC/Pivotal bietet mit „Pivotal HD“ eine eigene Hadoop-Variante an.

MapReduce nicht immer die beste Lösung

Die Erfahrung der Benutzer von Hadoop-Plattformen zeigt, dass nicht alle Big-Data-Anforderungen mit Hadoop und dem zweistufigen MapReduce-Programmierparadigma gelöst werden können. Für bestimmte Anwendungen wie (Near)-real-time-Analysen, „Machine-learning“-Algorithmen, iterative Algorithmen und Data Mining ist das Hadoop-Framework nur bedingt geeignet. Die für diese Art von Aufgaben notwendigen, wiederholten Iterationen auf die Daten zwingen Hadoop immer wieder dieselben Daten vom Hadoop File System (HDFS) zu lesen und führen so zu komplizierten MapReduce-Programmen. Die Folge sind zu lange Antwortzeiten des Systems für Anwendungen und Benutzer, die solche Aufgaben auch im operativen Umfeld erledigen wollen.

Abbildung 1: Die Betriebsvarianten von Spark, Quelle: BARC

 

Die Apache Open-Source-Software Spark versucht durch einen anderen Designansatz  diese Probleme zu umgehen. Apache Spark ist ein quelloffenes Datenanalyse-Cluster-Computing-Framework, das ursprünglich im AMPLab an der UC Berkeley entwickelt wurde. Spark kann in den Hadoop-Open-Source-Stack integriert werden und setzt auf dem Hadoop Distributed File System (HDFS) auf.  Abbildung 1 zeigt die verschiedenen Betriebsvarianten von Spark. Spark ist nicht an das zweistufige MapReduce-Paradigma gebunden und verspricht Performance-Verbesserungen für bestimmte Anwendungen um den Faktor 100 gegenüber Hadoop MapReduce.

In-Memory Cluster Computing

Spark bietet Funktionen für In-Memory-Cluster-Computing, die es Anwenderprogrammen erlauben, Daten in den Speicher eines Clusters zu laden und diese wiederholt abzufragen. Dadurch ist Spark besonders geeignet für (Near)-real-time-Anwendungen (z.B. Streamprocessing), Machine-Learning-Algorithmen, iterative Algorithmen und interaktives Data Mining. Spark ist seit Februar 2014 ein Apache Top-Level-Projekt und ist seit dem 11.September 2014 im Release V1.1.0 verfügbar.

Spark unterstützt die Programmierschnittstellen von Java, Scala und Python. Spark selbst wurde in Scala entwickelt und ist eine sehr schlanke Implementierung, die mit nur ca. 60.000 Zeilen Scala-Code auskommt. Die Stärke von Spark ist die Möglichkeit Datasets in Memory zu „cachen“ und diese wiederholt auf verschiedene Arten abzufragen. Die Speicherlemente von Spark sind die so genannten RDDs (Resilient Distributed Datasets). RDDs werden von den Spark-Operationen (genannt Transformationen) wie „Map“, „Filter“ oder „Join“ erstellt und dann im Hauptspeicher gespeichert. RDDs lassen sich beliebig oft lesen und können über den Spark Cluster verteilt werden. Eine interaktive Befehlszeilenschnittstelle (in Scala oder Python) ist für Low-Latency-Datenexploration im Spark Cluster vorhanden. Darüber hinaus existieren Higher-level-Bibliotheken für Stream Processing, Machine Learning und Graph Processing.

Fehlertoleranz

Interessant ist der Ansatz von Spark in Bezug auf Fehlertoleranz: Anstatt Zwischenergebnisse mit Hilfe von Logging oder Checkpointing zu speichern, merkt sich Spark die Folge von Operationen, die zu einem bestimmten Dataset (RDD) geführt haben. Im Fehlerfall rekonstruiert Spark das Dataset auf der Grundlage der gespeicherten Informationen.

Spark ist nicht das einzige derartige Produkt oder Framework im Markt. Ein weiteres Top-level-Projekt ist „Apache Storm“, das in Bezug auf (Near)-real-time-Processing und Streaming ähnliche Anforderungen erfüllen kann. IBM mit „InfoSphere Streaming“ und „BigSql“, EMC/Pivotal mit „Pivotal HD“, Tibco mit „Streambase“ oder die SAP bieten ebenfalls Streaming oder In-Memory-Processing mit SQL Interfaces an.

Der Erfolg von Spark wird davon abhängen, ob die Hauptdistributoren von Hadoop den Weg der Integration von Spark in das Hadoop-Framework fortsetzen und ob eine weitere Progarmmierschnittstelle akzeptable ist. Solange es für Spark kein Frontend gibt, ist zudem seine Nutzung nur durch Programmierung möglich.

(sa)