Kann Apache Spark ohne Hadoop laufen?

88

Gibt es Abhängigkeiten zwischen Spark und Hadoop ?

Wenn nicht, gibt es Funktionen, die ich vermissen werde, wenn ich Spark ohne Hadoop ausführe ?

Tourist
quelle

Antworten:

51

Spark kann ohne Hadoop ausgeführt werden, einige seiner Funktionen basieren jedoch auf dem Code von Hadoop (z. B. Umgang mit Parkettdateien). Wir führen Spark auf Mesos und S3 aus, was ein wenig schwierig einzurichten war, aber nach Abschluss sehr gut funktioniert (eine Zusammenfassung der erforderlichen Einstellungen finden Sie hier ).

(Bearbeiten) Hinweis: Seit Version 2.3.0 hat Spark auch native Unterstützung für Kubernetes hinzugefügt

Arnon Rotem-Gal-Oz
quelle
93

Spark ist eine speicherinterne verteilte Computer-Engine.

Hadoop ist ein Framework für Distributed Storage ( HDFS ) und Distributed Processing ( YARN ).

Spark kann mit oder ohne Hadoop-Komponenten (HDFS / YARN) ausgeführt werden.


Verteilter Speicher:

Da Spark kein eigenes verteiltes Speichersystem hat, muss es für verteiltes Rechnen auf eines dieser Speichersysteme angewiesen sein.

S3 - Nicht dringende Stapeljobs. S3 passt zu sehr spezifischen Anwendungsfällen, in denen die Datenlokalität nicht kritisch ist.

Cassandra - Perfekt für die Streaming-Datenanalyse und ein Overkill für Batch-Jobs.

HDFS - Hervorragend geeignet für Batch-Jobs, ohne Kompromisse bei der Datenlokalität einzugehen.


Verteilte Verarbeitung:

Sie können Spark in drei verschiedenen Modi ausführen : Standalone, YARN und Mesos

In der folgenden SE-Frage finden Sie eine ausführliche Erläuterung zum verteilten Speicher und zur verteilten Verarbeitung.

Welchen Clustertyp soll ich für Spark wählen?

Ravindra Babu
quelle
23

Standardmäßig verfügt Spark nicht über einen Speichermechanismus.

Zum Speichern von Daten wird ein schnelles und skalierbares Dateisystem benötigt. Sie können S3 oder HDFS oder ein anderes Dateisystem verwenden. Hadoop ist aufgrund der geringen Kosten eine wirtschaftliche Option.

Wenn Sie Tachyon verwenden, wird die Leistung mit Hadoop zusätzlich gesteigert. Es wird Hadoop für die Verarbeitung von Apache-Funken dringend empfohlen . Geben Sie hier die Bildbeschreibung ein

Venu A Positiv
quelle
6

Ja, Funken können ohne Hadoop laufen. Alle Kernfunktionen von spark funktionieren weiterhin, aber Sie werden Dinge vermissen, wie die einfache Verteilung all Ihrer Dateien (Code sowie Daten) über hdfs usw. an alle Knoten im Cluster.

quantum_random
quelle
6

Gemäß der Spark-Dokumentation kann Spark ohne Hadoop ausgeführt werden.

Sie können es als eigenständigen Modus ohne Ressourcenmanager ausführen.

Wenn Sie jedoch in einem Setup mit mehreren Knoten ausgeführt werden möchten , benötigen Sie einen Ressourcenmanager wie YARN oder Mesos und ein verteiltes Dateisystem wie HDFS, S3 usw.

user2359003
quelle
3

Ja, Sie können den Spark ohne Hadoop installieren. Das wäre etwas knifflig. Sie können auf den Arnon-Link verweisen, um Parkett zur Konfiguration auf S3 als Datenspeicher zu verwenden. http://arnon.me/2015/08/spark-parquet-s3/

Spark verarbeitet nur und verwendet dynamischen Speicher, um die Aufgabe auszuführen. Zum Speichern der Daten benötigen Sie jedoch ein Datenspeichersystem. Hier kommt Hadoop in die Rolle von Spark, es bietet den Speicher für Spark. Ein weiterer Grund für die Verwendung von Hadoop mit Spark ist, dass sie Open Source sind und beide im Vergleich zu anderen Datenspeichersystemen problemlos miteinander integriert werden können. Für andere Speicher wie S3 sollte es schwierig sein, ihn wie oben erwähnt zu konfigurieren.

Hadoop hat aber auch eine Verarbeitungseinheit namens Mapreduce.

Möchten Sie den Unterschied in beiden wissen?

Überprüfen Sie diesen Artikel: https://www.dezyre.com/article/hadoop-mapreduce-vs-apache-spark-who-wins-the-battle/83

Ich denke, dieser Artikel wird Ihnen helfen, zu verstehen

  • was zu verwenden,

  • wann zu verwenden und

  • wie benutzt man !!!

Abhijit Kumar
quelle
1

Ja natürlich. Spark ist ein unabhängiges Berechnungsframework. Hadoop ist ein Distributionsspeichersystem (HDFS) mit MapReduce-Berechnungsframework. Spark kann Daten von HDFS sowie von jeder anderen Datenquelle wie JDBC (Traditional Database), Kafka oder sogar lokaler Festplatte abrufen.

ssnijik
quelle
1

Ja, Spark kann mit oder ohne Hadoop-Installation ausgeführt werden. Weitere Informationen finden Sie unter https://spark.apache.org/docs/latest/.

Hadoop_Expert
quelle
0

Ja, Funken können ohne Hadoop laufen. Sie können Spark ohne Hadoop auf Ihrem lokalen Computer installieren. Spark lib wird jedoch mit Pre-Haddop-Bibliotheken geliefert, dh sie werden während der Installation auf Ihrem lokalen Computer verwendet.

Amarnath Pickel
quelle
-4

Nein. Es ist eine vollständige Hadoop-Installation erforderlich, um zu funktionieren - https://issues.apache.org/jira/browse/SPARK-10944

user1391095
quelle
1
Dies ist falsch, es funktioniert gut ohne Hadoop in aktuellen Versionen.
Chris Chambers
1
@ChrisChambers Möchten Sie näher darauf eingehen? In einem Kommentar zu diesem Problem heißt es: "Tatsächlich benötigt Spark Hadoop-Klassen, egal was passiert." Auf der Downloadseite gibt es nur Optionen für eine für eine bestimmte Hadoop-Version vorgefertigte oder eine mit vom Benutzer bereitgestellte Hadoop-Version. In den Dokumenten heißt es: "Spark verwendet Hadoop-Clientbibliotheken für HDFS und YARN." und diese Abhängigkeit scheint nicht optional zu sein.
NikoNyrh
1
@NikoNyrh richtig. Ich habe gerade versucht, das Download-Artefakt "Vom Benutzer bereitgestelltes Hadoop" auszuführen und sofort eine Stapelverfolgung zu erhalten. Ich möchte auch, dass der Klassenpfad von Spark von den Kernklassen von Hadoop entkoppelt wird. Aber für Prototyping- und Testzwecke nehme ich insgesamt kein anderes Problem als die Größe des Downloads (120 MB). Naja. Prost!
Jesús Zazueta
$ ./spark-shell Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream at org.apache.spark.deploy.SparkSubmitArguments$$anonfun$mergeDefaultSparkProperties$1.apply(SparkSubmitArguments.scala:118) at org.apache.spark.deploy.SparkSubmitArguments$$anonfun$mergeDefault at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 7 more
Stapelspur