Apache Spark vs Akka

pourriez-vous s'il vous plaît me dire la différence entre Apache Spark et AKKA, je sais que les deux cadres ont prévu de programmer des calculs distribués et parallèles, mais je ne vois pas le lien ou la différence entre eux.

en Outre, je voudrais obtenir le cas d'utilisation approprié pour chacun d'eux.

48
demandé sur hveiga 2015-03-17 02:29:17

3 réponses

Apache Spark est en fait construit sur Akka.

Akka est un cadre général destiné à créer des applications réactives, distribuées, parallèles et résilientes dans Scala ou Java. Akka utilise le modèle acteur pour cacher tout le code lié au thread et vous donne des interfaces vraiment simples et utiles pour mettre en œuvre un système évolutif et tolérant les défauts facilement. Un bon exemple pour Akka est une application en temps réel qui consomme et traite des données provenant de téléphones mobiles et il les envoie dans une sorte d'entrepôt.

Apache Spark (not Spark Streaming) est un framework pour traiter les données par lots à l'aide d'une version généralisée de l'algorithme map-reduce. Un bon exemple pour Apache Spark est un calcul de certains indicateurs de données stockées pour obtenir un meilleur aperçu de vos données. Les données sont chargées et traitées sur demande.

Apache Spark Streaming est capable d'effectuer des actions et des fonctions similaires sur de petits lots de données en temps quasi réel même manière que vous le feriez si les données sont déjà stockées.

MISE À JOUR AVRIL 2016

D'après Apache Spark 1.6.0, Apache Spark ne compte plus sur Akka pour la communication entre les noeuds. Merci à @EugeneMi pour le commentaire.

82
répondu hveiga 2016-04-15 14:36:06

Spark est pour le traitement des données ce que Akka est à la gestion des données et le flux d'instruction dans une application.

TL; DR

Spark et Akka sont deux cadres différents avec des utilisations et des cas d'utilisation différents.

lors de la construction d'applications, distribuées ou non, il peut être nécessaire de programmer et de gérer les tâches par une approche parallèle telle que l'utilisation de threads. Imaginez une énorme demande avec beaucoup de threads. Comment compliqué que ce serait?

la boîte à outils Akka de TypeSafe vous permet d'utiliser des systèmes D'acteurs (à l'origine dérivés D'Erlang) qui vous donne une couche d'abstraction sur les threads. Ces acteurs sont capables de communiquer les uns avec les autres en passant n'importe quoi et tout comme des messages, et de faire des choses parallèles et sans bloquer d'autres codes.

Akka vous donne une cerise sur le dessus en vous fournissant des moyens de diriger les acteurs dans un environnement distribué.

Apache Spark, d'autre part, est un framework de traitement de données pour les ensembles de données massives qui ne peuvent pas être manipulés manuellement. Spark utilise ce que nous appelons un RDD (ou Resilient Distributed Dataets) qui est une liste distribuée comme une couche d'abstraction sur vos structures de données traditionnelles afin que les opérations puissent être effectuées sur différents noeuds parallèles les uns aux autres.

Spark utilise la boîte à outils Akka pour programmer les travaux entre différents noeuds.

25
répondu Chetan Bhasin 2015-03-17 14:17:03

Apache Spark:

Apache Spark™ est un moteur rapide et général pour le traitement de données à grande échelle.

Spark exécuter des programmes jusqu'à 100x plus rapide que Hadoop MapReduce en mémoire, ou 10x plus rapide sur le disque.

Spark nous donne un cadre complet et unifié pour gérer les exigences de traitement de données volumineuses avec une variété d'ensembles de données qui sont de nature diverse (données textuelles, données graphiques, etc.) ainsi que la source de données (lot v. données en transit en temps réel).

  1. S'intègre bien avec L'écosystème Hadoop et les sources de données ( HDFS, Amazon S3, Hive, HBase, Cassandra , etc.)

  2. peut fonctionner sur des clusters gérés par fils Hadoop ou Apache Mesos , et peut également fonctionner en Standalone mode

  3. fournit APIs dans Scala, Java , et Python , avec un support pour d'autres langues (telles que R) sur le chemin

  4. en plus de la carte et de réduire les opérations, il prend en charge SQL requêtes, diffusion de données, apprentissage machine et graphique le traitement des données.

nous devrions considérer Spark comme une alternative à Hadoop MapReduce plutôt que comme un remplacement à Hadoop.

regarder infoQ et toptal articles pour mieux comprendre.

principaux cas D'utilisation pour étincelles:

  1. algorithmes D'apprentissage Machine
  2. des analyses Interactives
  3. flux de données

Akka: from Letitcrash

Akka est un cadre middleware piloté par les événements, pour la construction de hautes performances et des applications distribuées fiables en Java et Scala. Akka dissocie la logique commerciale des mécanismes de bas niveau tels que les threads, les locks et les IO non bloquants. Avec Akka, vous pouvez facilement configurer comment les acteurs seront créés, détruits, programmés et redémarrés en cas d'échec.

Avoir un oeil à cette typesafe de l'article pour une meilleure compréhension sur le framework d'Acteur.

Akka fournit la tolérance de faute basée sur les hiérarchies de superviseur. Chaque acteur peut créer d'autres acteurs, qu'il supervisera ensuite, prenant des décisions si elles doivent être reprises, redémarrées, retraitées ou si le problème devrait être aggravé.

regarder Akka "1519560920 de l'article" & AINSI en question

principaux cas d'utilisation:

  1. traitement des transactions
  2. concurrence / parallélisme
  3. Simulation
  4. traitement par lots
  5. jeux et Paris
  6. Des Événements Complexes De Traitement De Flux
12
répondu Ravindra babu 2017-10-25 05:18:10