Apache Spark peut-il fonctionner sans hadoop?

91

Y a-t-il des dépendances entre Spark et Hadoop ?

Sinon, y a-t-il des fonctionnalités qui me manqueront lorsque j'exécuterai Spark sans Hadoop ?

touristique
la source

Réponses:

53

Spark peut fonctionner sans Hadoop mais certaines de ses fonctionnalités reposent sur le code de Hadoop (par exemple la gestion des fichiers Parquet). Nous exécutons Spark sur Mesos et S3, ce qui était un peu difficile à configurer mais fonctionne très bien une fois terminé (vous pouvez lire un résumé de ce qui était nécessaire pour le configurer correctement ici ).

(Modifier) ​​Remarque: depuis la version 2.3.0, Spark a également ajouté un support natif pour Kubernetes

Arnon Rotem-Gal-Oz
la source
96

Spark est un moteur de calcul distribué en mémoire.

Hadoop est un framework pour le stockage distribué ( HDFS ) et le traitement distribué ( YARN ).

Spark peut fonctionner avec ou sans composants Hadoop (HDFS / YARN)


Stockage distribué:

Puisque Spark ne possède pas son propre système de stockage distribué, il doit dépendre de l'un de ces systèmes de stockage pour l'informatique distribuée.

S3 - Tâches par lots non urgentes. S3 convient à des cas d'utilisation très spécifiques lorsque la localité des données n'est pas critique.

Cassandra - Parfait pour l'analyse de données en continu et une surdéfinition pour les travaux par lots.

HDFS - Idéal pour les travaux par lots sans compromettre la localisation des données.


Traitement distribué:

Vous pouvez exécuter Spark dans trois modes différents: Standalone, YARN et Mesos

Jetez un œil à la question SE ci-dessous pour une explication détaillée sur le stockage distribué et le traitement distribué.

Quel type de cluster dois-je choisir pour Spark?

Ravindra babu
la source
23

Par défaut, Spark n'a pas de mécanisme de stockage.

Pour stocker des données, il a besoin d'un système de fichiers rapide et évolutif. Vous pouvez utiliser S3 ou HDFS ou tout autre système de fichiers. Hadoop est une option économique en raison de son faible coût.

De plus, si vous utilisez Tachyon, cela augmentera les performances avec Hadoop. Il est fortement recommandé d'utiliser Hadoop pour le traitement des étincelles Apache . entrez la description de l'image ici

Venu A positif
la source
6

Oui, l'étincelle peut fonctionner sans hadoop. Toutes les fonctionnalités principales de Spark continueront de fonctionner, mais vous manquerez des choses comme la distribution facile de tous vos fichiers (code ainsi que données) à tous les nœuds du cluster via hdfs, etc.

quantum_random
la source
6

Selon la documentation Spark, Spark peut fonctionner sans Hadoop.

Vous pouvez l'exécuter en mode autonome sans aucun gestionnaire de ressources.

Mais si vous souhaitez exécuter une configuration multi-nœuds , vous avez besoin d'un gestionnaire de ressources comme YARN ou Mesos et d'un système de fichiers distribué comme HDFS, S3, etc.

user2359003
la source
3

Oui, vous pouvez installer le Spark sans Hadoop. Ce serait peu compliqué Vous pouvez vous référer à arnon link pour utiliser parquet à configurer sur S3 comme stockage de données. http://arnon.me/2015/08/spark-parquet-s3/

Spark ne fait que traiter et utilise la mémoire dynamique pour effectuer la tâche, mais pour stocker les données, vous avez besoin d'un système de stockage de données. Ici, hadoop joue un rôle avec Spark, il fournit le stockage pour Spark. Une autre raison d'utiliser Hadoop avec Spark est qu'ils sont open source et que les deux peuvent s'intégrer facilement l'un à l'autre par rapport à un autre système de stockage de données. Pour un autre stockage comme S3, vous devriez être difficile à configurer comme mentionné dans le lien ci-dessus.

Mais Hadoop a également son unité de traitement appelée Mapreduce.

Vous voulez connaître la différence entre les deux?

Consultez cet article: https://www.dezyre.com/article/hadoop-mapreduce-vs-apache-spark-who-wins-the-battle/83

Je pense que cet article vous aidera à comprendre

  • quoi utiliser,

  • quand utiliser et

  • comment utiliser !!!

Abhijit Kumar
la source
1

Oui bien sûr. Spark est un framework de calcul indépendant. Hadoop est un système de stockage de distribution (HDFS) avec le cadre de calcul MapReduce. Spark peut obtenir des données de HDFS, ainsi que de toute autre source de données telle qu'une base de données traditionnelle (JDBC), kafka ou même un disque local.

ssnijik
la source
0

Oui, l'étincelle peut fonctionner sans Hadoop. Vous pouvez installer Spark sur votre machine locale sans Hadoop. Mais Spark lib est livré avec des bibliothèques pré-Haddop c'est-à-dire utilisées lors de l'installation sur votre machine locale.

bouton amarnath
la source
-5

Non, il faut une installation complète de Hadoop pour commencer à fonctionner - https://issues.apache.org/jira/browse/SPARK-10944

user1391095
la source
1
C'est incorrect, cela fonctionne bien sans Hadoop dans les versions actuelles.
Chris Chambers
1
@ChrisChambers Voudriez-vous élaborer? Le commentaire sur ce problème dit "En fait, Spark nécessite des classes Hadoop quoi qu'il arrive", et sur la page de téléchargement, il n'y a que des options pour une version pré-construite pour une version Hadoop spécifique ou une avec Hadoop fourni par l'utilisateur. Et les documents indiquent que "Spark utilise les bibliothèques clientes Hadoop pour HDFS et YARN". et cette dépendance ne semble pas être facultative.
NikoNyrh
1
@NikoNyrh est correct. J'ai juste essayé d'exécuter l'artefact de téléchargement `` Hadoop fourni par l'utilisateur '' et d'obtenir immédiatement une trace de la pile. Je souhaite également que le classpath de Spark soit découplé des classes Hadoop principales. Mais à des fins de prototypage et de test, je ne prends aucun problème autre que la taille du téléchargement (120 Mo) dans l'ensemble. Tant pis. À votre santé!
Jesús Zazueta
Trace de pile en question:$ ./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
Jesús Zazueta