wake-up-neo.net

In welcher Beziehung stehen Spark, Hadoop und Cassandra?

Nach meinem Verständnis war Spark eine Alternative zu Hadoop. Beim Versuch, Spark zu installieren, werden Sie auf der Installationsseite nach einer vorhandenen Hadoop-Installation gefragt. Ich kann nichts finden, das diese Beziehung klarstellt.

Zweitens hat Spark offenbar gute Verbindungen zu Cassandra und Hive. Beide haben eine SQL-Stiloberfläche. Spark hat jedoch eine eigene SQL. Warum sollte man Cassandra/Hive anstelle von Spark's nativen SQL verwenden? Angenommen, dies ist ein brandneues Projekt ohne bestehende Installation?

20
Shahbaz

Spark ist eine im Speicher verteilte Engine. Es muss nicht mit Hadoop gekoppelt werden. Da Hadoop jedoch eines der beliebtesten Tools für die Verarbeitung großer Datenmengen ist, ist Spark für diese Umgebung gut geeignet. Zum Beispiel verwendet Hadoop das HDFS (Hadoop Distributed File System) zum Speichern seiner Daten, sodass Spark Daten aus HDFS lesen und Ergebnisse in HDFS speichern kann.

Aus Geschwindigkeitsgründen speichert Spark seine Datensätze im Speicher. Normalerweise wird ein Job durch Laden von Daten aus einem dauerhaften Speicher wie HDFS, Hbase, einer Cassandra-Datenbank usw. gestartet. Sobald Spark in den Speicher geladen wurde, kann er viele Transformationen im Datensatz ausführen, um ein gewünschtes Ergebnis zu berechnen. Das Endergebnis wird dann normalerweise in den dauerhaften Speicher zurückgeschrieben.

Als Alternative zu Hadoop kann es bei bestimmten Operationen viel schneller als Hadoop sein. Zum Beispiel kann ein Vorgang zum Reduzieren einer Multi-Pass-Map in Spark erheblich schneller sein als bei einer Hadoop-Map-Reduzierung, da der größte Teil der Festplatten-E/A von Hadoop vermieden wird. Spark kann Daten lesen, die für Apache Hive formatiert sind. Spark SQL kann daher viel schneller als die Verwendung von HQL (Hive Query Language) sein.

Cassandra verfügt über eine eigene native Abfragesprache mit dem Namen CQL (Cassandra Query Language), ist jedoch eine kleine Teilmenge von vollständigem SQL und ist für Aggregation und Ad-hoc-Abfragen ziemlich schlecht. Wenn Spark also mit Cassandra gekoppelt ist, bietet es eine umfangreichere Abfragesprache und ermöglicht die Durchführung von Datenanalysen, die von nativem CQL nicht bereitgestellt werden.

Ein weiterer Anwendungsfall für Spark ist die Stream-Verarbeitung. Spark kann so eingerichtet werden, dass eingehende Echtzeitdaten aufgenommen und in Mikrobatches verarbeitet werden. Das Ergebnis kann dann in einem dauerhaften Speicher wie HDFS, Cassandra usw. gespeichert werden.

Spark ist also wirklich ein eigenständiges Speichersystem, das mit vielen verschiedenen verteilten Datenbanken und Dateisystemen gekoppelt werden kann, um die Leistung zu erhöhen, eine vollständigere SQL-Implementierung zu bieten und Funktionen, denen eine solche Stream-Verarbeitung fehlt.

51
Jim Meyer

Ich schreibe eine Arbeit über Hadoop für die Universität. Und stolperte über deine Frage. Spark verwendet Hadoop nur für die Persistenz und nur, wenn Sie es verwenden möchten. Es ist möglich, es mit anderen Persistenzstufen wie Amazon EC2 zu verwenden.

Auf der anderen Seite läuft der Funke in-memory und es ist nicht primär gebaut, um Map-Use-Cases zu verwenden, wie es Hadoop war/ist.

Ich kann diesen Artikel empfehlen, wenn Sie eine detailliertere Beschreibung wünschen: https://www.xplenty.com/blog/2014/11/Apache-spark-vs-hadoop-mapreduce/

3
sascha10000

Die README.md-Datei in Spark kann Ihr Rätsel lösen:

Ein Hinweis zu Hadoop-Versionen

Spark verwendet die Hadoop-Kernbibliothek, um mit HDFS und anderen von Hadoop unterstützten .__ zu kommunizieren. Speichersysteme. Weil sich die Protokolle in verschiedenen Versionen von .__ geändert haben. Hadoop, Sie müssen Spark anhand derselben Version erstellen, die Ihr Cluster ausführt.

Bitte beachten Sie die Build-Dokumentation unter "Angabe der Hadoop-Version" Für detaillierte Anleitungen zum Aufbau einer bestimmten Verteilung von Hadoop, einschließlich Aufbau für bestimmte Hive- und Hive Thriftserver-Distributionen.

0
puppylpg