Je croyais comprendre que Spark était une alternative à Hadoop. Cependant, lors de la tentative d'installation de Spark, la page d'installation demande une installation Hadoop existante. Je ne peux rien trouver qui clarifie cette relation.
Deuxièmement, Spark semble avoir une bonne connectivité avec Cassandra et Hive. Les deux ont une interface de style SQL. Cependant, Spark a son propre sql. Pourquoi utiliser Cassandra/Hive au lieu du sql natif de Spark? En supposant qu'il s'agisse d'un tout nouveau projet sans installation existante?
Spark est un moteur de traitement de la mémoire distribué. Il n’est pas nécessaire de le coupler à Hadoop, mais comme Hadoop est l’un des outils de traitement de données les plus populaires, Spark est conçu pour fonctionner correctement dans cet environnement. Par exemple, Hadoop utilise le système de fichiers HDFS (Hadoop Distributed File System) HDFS pour stocker ses données. Spark peut donc lire les données à partir de HDFS et enregistrer les résultats dans HDFS.
Pour la rapidité, Spark conserve ses ensembles de données en mémoire. Il commence généralement une tâche en chargeant des données depuis une mémoire durable, telle que HDFS, Hbase, une base de données Cassandra, etc. Une fois chargé en mémoire, Spark peut exécuter de nombreuses transformations sur le jeu de données pour calculer le résultat souhaité. Le résultat final est ensuite généralement réécrit sur un stockage durable.
En tant que solution alternative à Hadoop, il peut être beaucoup plus rapide que Hadoop sur certaines opérations. Par exemple, une opération de réduction de carte multi-passe peut être considérablement plus rapide dans Spark qu'avec la réduction de carte Hadoop, car la plupart des E/S de disque de Hadoop sont évitées. Spark peut lire des données formatées pour Apache Hive. Spark SQL peut donc être beaucoup plus rapide que d'utiliser HQL (Hive Query Language).
Cassandra a son propre langage de requête natif appelé CQL (Cassandra Query Language), mais il ne s'agit que d'un petit sous-ensemble de SQL complet et est assez médiocre pour des opérations telles que l'agrégation et les requêtes ad hoc. Ainsi, lorsque Spark est associé à Cassandra, il offre un langage de requête plus riche en fonctionnalités et vous permet d'effectuer des analyses de données que CQL natif ne fournit pas.
Un autre cas d'utilisation de Spark concerne le traitement de flux. Spark peut être configuré pour absorber les données en temps réel entrantes et les traiter en micro-lots, puis enregistrer le résultat dans un stockage durable, tel que HDFS, Cassandra, etc.
Ainsi, spark est vraiment un système de mémoire autonome pouvant être associé à de nombreuses bases de données réparties et systèmes de fichiers distribués pour améliorer les performances, une implémentation SQL plus complète et des fonctionnalités pour lesquelles un tel traitement de flux peut manquer.
Je suis en train d'écrire un article sur Hadoop pour l'université. Et trébuché sur votre question. Spark utilise uniquement Hadoop pour la persistance et uniquement si vous souhaitez l'utiliser. Il est possible de l'utiliser avec d'autres niveaux de persistance tels qu'Amazon EC2.
D'autre part, l'étincelle côté main s'exécute en mémoire et sa construction n'est pas principalement destinée à être utilisée pour les cas d'utilisation de carte, comme Hadoop était/est.
Je peux recommander cet article si vous aimez une description plus détaillée: https://www.xplenty.com/blog/2014/11/Apache-spark-vs-hadoop-mapreduce/
Le fichier README.md dans Spark peut résoudre votre casse-tête:
Note sur les versions de Hadoop
Spark utilise la bibliothèque principale Hadoop pour communiquer avec HDFS et d'autres .__ pris en charge par Hadoop. systèmes de stockage. Parce que les protocoles ont changé dans différentes versions de Hadoop, vous devez compiler Spark avec la même version que votre cluster.
Veuillez vous reporter à la documentation de compilation à l'adresse "Spécification de la version Hadoop" pour obtenir des conseils détaillés sur la création d’une distribution particulière de Hadoop, y compris bâtiment pour des distributions particulières de Hive et Hive Thriftserver.