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 étaient destinés à programmer des calculs dissortingbués et parallèles, mais je ne vois pas le lien ou la différence entre eux.

De plus, je souhaiterais que les cas d’utilisation conviennent à chacun d’eux.

Apache Spark est actuellement construit sur Akka.

Akka est un cadre général permettant de créer des applications concurrentes réactives, dissortingbuées, parallèles et résilientes en Scala ou en Java. Akka utilise le modèle Actor pour masquer tout le code associé aux threads et vous offre 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 consum et traite les données provenant des téléphones mobiles et les envoie vers une sorte de stockage.

Apache Spark (et non Spark Streaming) est une structure permettant de traiter les données par lots à l’aide d’une version généralisée de l’algorithme de réduction de carte. Un bon exemple d’Apache Spark est le calcul de certaines mésortingques 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 Streaming est capable d’effectuer 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 vous le feriez si les données étaient déjà stockées.

MISE À JOUR AVRIL 2016

Apache Spark 1.6.0 n’utilise plus Akka pour la communication entre les nœuds. Merci à @EugeneMi pour le commentaire.

Spark est pour le traitement des données ce que Akka est pour gérer les stream 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, dissortingbuées ou non, il peut être nécessaire de planifier et de gérer des tâches via une approche parallèle, par exemple en utilisant des threads. Imaginez une application énorme avec beaucoup de threads. À quel point cela serait-il compliqué?

La boîte à outils Akka de TypeSafe vous permet d’utiliser les systèmes Actor (à l’origine dérivés d’Erlang) qui vous donnent une couche d’abstraction sur les threads. Ces acteurs sont capables de communiquer entre eux en transmettant tout et n’importe quoi en tant que messages, et font des choses parallèlement et sans bloquer les autres codes.

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

Apache Spark, quant à lui, est une infrastructure de traitement de données pour des ensembles de données massifs qui ne peuvent pas être gérés manuellement. Spark utilise ce que nous appelons un RDD (ou Resilient Dissortingbuted Datasets) qui est dissortingbué comme une couche d’abstraction sur vos structures de données traditionnelles, de sorte que les opérations puissent être effectuées sur différents nœuds parallèles les uns aux autres.

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

Apache Spark:

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

Spark exécute des programmes jusqu’à 100 fois plus rapidement que Hadoop MapReduce en mémoire, ou 10 fois plus rapidement sur disque.

Spark nous offre une infrastructure complète et unifiée pour gérer les exigences en matière de traitement de données volumineuses grâce à divers ensembles de données de nature diverse (données textuelles, données graphiques, etc.) ainsi que la source des données (données de diffusion en temps réel par lot). .

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

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

  3. Fournit des API dans Scala, Java et Python , avec prise en charge d’autres langages (tels que R) sur le chemin

  4. Outre les opérations Map et Reduce, il prend en charge les requêtes SQL , les données en continu, l’apprentissage automatique et le traitement des données graphiques.

Nous devrions considérer Spark comme une alternative à Hadoop MapReduce plutôt qu’à un remplacement de Hadoop.

Jetez un coup d’œil aux articles infoQ et toptal pour une meilleure compréhension.

Cas d’utilisation majeure pour Spark:

  1. Algorithmes d’apprentissage automatique
  2. Analyse interactive
  3. Flux de données

Akka: de Letitcrash

Akka est un environnement intermédiaire piloté par les événements, destiné à créer des applications dissortingbuées hautes performances et fiables en Java et Scala. Akka dissocie la logique métier des mécanismes de bas niveau tels que les threads, les verrous et les IO non bloquantes. Avec Akka, vous pouvez facilement configurer la manière dont les acteurs seront créés, détruits, programmés et redémarrés en cas d’échec.

Jetez un coup d’œil à cet article sur la sécurité pour mieux comprendre le framework Actor.

Akka offre une tolérance aux pannes basée sur les hiérarchies de superviseurs. Chaque acteur peut créer d’autres acteurs, qu’il supervisera ensuite, décidera s’il doit être repris, redémarré, mis à la retraite ou si le problème doit être relevé.

Consultez l’article d’ Akka et les questions de SO

Cas d’usage majeur:

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