web-dev-qa-db-fra.com

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 frameworks voulaient programmer des calculs distribués et parallèles, mais je ne vois pas le lien ni la différence entre eux.

De plus, j'aimerais que les cas d'utilisation soient adaptés à chacun d'eux.

55
Anis Nouri

Apache Spark est en fait construit sur Akka.

Akka est un framework à usage général permettant de créer des applications simultanées réactives, distribuées, parallèles et résilientes en Scala ou en Java. Akka utilise le modèle Actor pour masquer tout le code lié aux threads et vous fournit des interfaces très simples et utiles pour implémenter facilement un système évolutif et tolérant aux pannes. Un bon exemple pour Akka est une application en temps réel qui consomme et traite les données provenant de téléphones mobiles et les envoie vers un type de stockage.

Apache Spark (et non Spark Streaming) est un framework permettant de traiter les données de traitement par lots à l'aide d'une version généralisée de l'algorithme map-réduire. Un bon exemple pour Apache Spark est le calcul de certaines métriques de données stockées pour obtenir un meilleur aperçu de vos données. Les données sont chargées et traitées à la demande.

Apache Spark Le streaming est capable d'exécuter des actions et des fonctions similaires sur de petits lots de données en temps quasi réel, de la même manière que si les données étaient déjà stockées.

MISE À JOUR AVRIL 2016

À partir d'Apache Spark 1.6.0, Apache Spark ne s'appuie plus sur Akka pour la communication entre les nœuds. Merci à @EugeneMi pour le commentaire.

92
hveiga

Spark est pour le traitement des données, ce qu'Akka est pour la gestion du flux de données et d'instructions dans une application.

TL; DR

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

Lors de la création d'applications, distribuées ou non, il peut être nécessaire de planifier et de gérer des tâches via une approche parallèle, telle que l'utilisation de threads. Imaginez une énorme application avec beaucoup de threads. Comment cela serait-il compliqué?

La boîte à outils Akka de TypeSafe (maintenant appelée Lightbend) vous permet d'utiliser des systèmes Actor (dérivés à l'origine d'Erlang) qui vous fournissent une couche d'abstraction sur des threads. Ces acteurs sont capables de communiquer les uns avec les autres en transmettant tout et n'importe quoi sous forme de messages, et de faire des choses en parallèle et sans bloquer d'autres codes.

Akka vous donne une cerise sur le gâteau en vous fournissant des moyens de gérer les acteurs dans un environnement distribué.

Apache Spark, en revanche, est une infrastructure de traitement de données pour des jeux de données volumineux qui ne peuvent pas être manipulés manuellement. Spark utilise ce que nous appelons un RDD (ou ensemble de données distribuées résilientes) 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 nœuds en parallèle.

Spark utilise la boîte à outils Akka pour planifier des travaux entre différents nœuds.

28
Chetan Bhasin

Apache Spark:

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

Spark exécutez les programmes jusqu'à 100 fois plus vite que Hadoop MapReduce en mémoire ou 10 fois plus vite sur le disque.

Spark nous fournit 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 de nature diverse (données textuelles, données graphiques, etc.) ainsi que la source des données ( lot v. données en temps réel en streaming).

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

  2. Peut fonctionner sur des clusters gérés par Hadoop YARN ou Apache Mesos , et peut également exécuté en mode autonome

  3. Fournit des API dans Scala, Java et Python , avec prise en charge d'autres langues (comme R) sur le chemin

  4. En plus des opérations de mappage et de réduction, il prend en charge les requêtes [~ # ~] sql [~ # ~] , la transmission en continu de données, l’apprentissage automatique et le traitement de données graphiques. .

Nous devrions envisager Spark) comme une alternative à Hadoop MapReduce plutôt qu’à un remplacement de Hadoop.

Consultez les articles infoQ et toptal pour une meilleure compréhension.

Principaux cas d'utilisation de Spark:

  1. Algorithmes d'apprentissage machine
  2. Analyse interactive
  3. Données en streaming

Akka: à partir de Letitcrash

Akka est un framework de middleware piloté par les événements, conçu pour créer des applications distribuées hautes performances et fiables dans Java et Scala. Akka dissocie la logique métier des mécanismes de bas niveau tels que les threads, les verrous et les E/S non bloquantes. Avec Akka, vous pouvez facilement configurer le mode de création, de destruction, de planification et de redémarrage des acteurs en cas d’échec.

Jetez un oeil à cet article typesafe pour une meilleure compréhension du framework Actor.

Akka fournit une tolérance aux pannes basée sur les hiérarchies des superviseurs. Chaque acteur peut créer d’autres acteurs qu’il supervisera par la suite, en décidant s’ils doivent être repris, relancés, retirés ou si le problème doit être aggravé.

Jetez un oeil à Akka article & SO questions

Principaux cas d'utilisation:

  1. Transaction en cours
  2. Concurrence/parallélisme
  3. Simulation
  4. Le traitement par lots
  5. Jeux et paris
  6. Traitement de flux d'événements complexes
16
Ravindra babu

Le choix entre Apache Spark, Akka ou Kafka est fortement axé sur le cas d'utilisation (en particulier le contexte et le contexte des services à concevoir)) dans lequel ils sont déployés. Les facteurs incluent la latence, le volume, les intégrations tierces et la nature du traitement requis (lot ou diffusion en continu, etc.). Cette ressource m'a été particulièrement utile - https://conferences.oreilly.com/strata/strata-ca-2016/public/schedule/detail/47251

0
user11768920