Apache Spark vs. Hadoop MapReduce: Welches Big Data Framework sollte man wählen?
Es ist eine echte Herausforderung, unter mehreren Big Data Frameworks, die auf dem Markt verfügbar sind, das richtige auszuwählen. Ein klassischer Ansatz, bei dem die Vor- und Nachteile jeder Plattform gegenübergestellt werden, kann wenig hilfreich sein, weil Unternehmen jedes Framework aus der Perspektive von ihren besonderen Bedürfnissen betrachten sollen. Indem unsere Experten in der Big-Data-Beratung mehrere Anfragen zu Hadoop MapReduce und Apache Spark bekommen, sind wir in der Lage, diese zwei führenden Frameworks zu vergleichen, um eine brennende Frage zu beantworten: Welche Option sollte man wählen - Hadoop MapReduce oder Apache Spark.
Ein kurzer Blick auf die Marktsituation
Sowohl Hadoop als auch Spark sind Open-Source-Projekte der Apache Software Foundation und die beiden sind die Flaggschiffe in der Analyse von Big Data. Hadoop nimmt seit mehr als 5 Jahren eine führende Position auf dem Big-Data-Markt ein. Laut unserer aktuellen Marktstudie haben mehr als 50.000 Kunden Hadoop genutzt, während Spark nur 10.000+ Installationen vorweisen kann. Die Beliebtheit von Spark schoss aber 2013 in die Höhe, und das Interesse an Spark im Laufe nur eines Jahres das Interesse an Hadoop überstiegen hat. Eine neue Wachstumsrate bei Installationen (2016/2017) zeigt, dass der Trend noch anhält. Spark übertrifft Hadoop mit 47% gegenüber 14% entsprechend.
Die wichtigsten Unterschiede zwischen Hadoop MapReduce und Spark
Um den Vergleich fair zu gestalten, stellen wir Spark Hadoop MapReduce gegenüber, weil beide für die Datenverarbeitung verantwortlich sind. Im Grunde genommen liegt der Hauptunterschied zwischen ihnen in der Vorgehensweise bei der Verarbeitung: Spark kann das direkt im Speicher tun, während Hadoop MapReduce von der Festplatte lesen und auf diese Festplatte schreiben muss. Infolgedessen unterscheidet sich die Verarbeitungsgeschwindigkeit erheblich - Spark kann bis zu 100 mal schneller sein. Aber die Menge der verarbeiteten Daten ist auch unterschiedlich: Hadoop MapReduce kann mit weitaus größeren Datenmengen als Spark arbeiten.
Schauen wir uns nun die Aufgaben näher an, für die jedes Framework gut ist.
Hadoop MapReduce funktioniert gut für:
- Lineare Verarbeitung von großen Datenmengen. Hadoop MapReduce ermöglicht die parallele Verarbeitung von großen Datenmengen. Es zerteilt eine große Portion der Daten zuerst in viele kleinere Teile, die parallel auf verschiedenen Datenknoten verarbeitet werden, sammelt die Ergebnisse automatisch aus mehreren Knoten, um sie zu einem einzelnen Endergebnis zusammenzufassen. Falls der daraus entstandene Datensatz größer als der verfügbare RAM ist, kann Hadoop MapReduce Spark übertreffen.
- Kosten sparende Lösung, wenn keine schnellen Ergebnisse erwartet werden. Unser Hadoop-Team hält MapReduce für eine gute Lösung, wenn die Verarbeitungsgeschwindigkeit nicht entscheidend ist. Wenn beispielsweise die Datenverarbeitung während der Nachtstunden erfolgen kann, ist es sinnvoll, Hadoop MapReduce zu verwenden.
Spark funktioniert gut für:
- Schnelle Datenverarbeitung. Die In-Memory-Datenverarbeitung macht Spark schneller als Hadoop MapReduce - bis zu 100 Mal für Daten im RAM (Arbeitsspeicher) und bis zu 10 Mal für Daten im Speicher.
- Iterative Verarbeitung. Wenn die Aufgabe darin besteht, Daten immer wieder zu verarbeiten - Spark schlägt Hadoop MapReduce ab. Resilient Distributed Datasets (RDDs) ermöglichen mehrere verteilte In-Memory-Berechnungen, während Hadoop MapReduce Zwischenergebnisse auf einer Festplatte schreiben muss.
- Nahe-Echtzeitverarbeitung. Wenn ein Unternehmen sofortige Erkenntnisse benötigt, sollte es Spark und seine In-Memory-Verarbeitung wählen.
- Graph Verarbeitung. Sparks Rechenmodell eignet sich gut für iterative Berechnungen, die in der Graph Verarbeitung typisch sind. Und Apache Spark hat GraphX - eine API für die Berechnung von Graphen.
- Maschinelles Lernen. Spark bringt MLlib - eine integrierte Bibliothek zum maschinellen Lernen mit, während Hadoop einen Drittanbieter benötigt, um sie bereitzustellen. MLlib verfügt über Out-of-the-Box-Algorithmen, die auch im Speicher ausgeführt werden. Außerdem gibt es die Möglichkeit, sie abzustimmen und einzustellen.
- Verknüpfen von Datensätzen. Aufgrund seiner Geschwindigkeit kann Spark alle Kombinationen schneller erstellen. Obwohl Hadoop möglicherweise besser ist, wenn Sie das Verknüpfen von sehr großen Datensätzen brauchen, das viel Mischung und Sortierung benötigt.
Konkrete Anwendungsbeispiele
Wir analysierten mehrere Anwendungsfälle und kamen zur Schlussfolgerung, dass Spark in allen nachstehend aufgeführten Fällen durch die schnelle oder sogar Nahezu-Echtzeitverarbeitung wahrscheinlich MapReduce übertreffen wird. Schauen wir uns die Beispiele an.
- Kundensegmentierung Die Analyse des Kundenverhaltens und das Identifizieren von Kundensegmenten, die ähnliche Verhaltensmuster aufweisen, hilft den Unternehmen dabei, Kundenpräferenzen zu verstehen und einzigartige Kundenerfahrung zu schaffen.
- Risikomanagement. Die Prognose von verschiedenen möglichen Szenarien kann den Managern helfen, richtige Entscheidungen zu treffen, indem sie risikofreie Optionen wählen.
- Echtzeit-Betrugsprävention. Nachdem das System mit Hilfe von Algorithmen des maschinellen Lernens historische Daten gelernt hat, kann es die Erkenntnisse verwenden, um eine Anomalie, die auf einen möglichen Betrug hinweisen könnte, in Echtzeit zu identifizieren oder vorherzusagen.
- Big-Data-Analyse in der Produktion. Es geht auch darum, Anomalien zu erkennen und vorherzusagen, aber in diesem Fall hängen diese Anomalien mit Maschinenausfällen zusammen. Ein richtig konfiguriertes System sammelt die Daten von Sensoren, um anstehende Ausfälle zu erkennen.
Welches Framework soll gewählt werden?
Ihre speziellen Geschäftsanforderungen sollen bei der Wahl eines Frameworks ausschlaggebend sein. Die lineare Verarbeitung von großen Datenmengen ist der Vorteil von Hadoop MapReduce, während Spark schnelle Leistung, iterative Verarbeitung, Echtzeit-Analyse, Graph Verarbeitung, maschinelles Lernen und mehr bietet. In vielen Fällen kann Spark Hadoop MapReduce übertreffen. Die gute Nachricht ist, dass Spark vollständig mit dem Hadoop-Ökosystem kompatibel ist und reibungslos mit Hadoop Distributed File System, Apache Hive usw. zusammenarbeitet.