Qu’est-ce que SMACK (Spark, Mesos, Akka et Kafka) ?

Facebook
Twitter
LinkedIn

Ce blog présente la convergence de technologies complémentaires – la pile Spark, Mesos, Akka, Cassandra et Kafka (SMACK). Et nous verrons comment Apache Kafka peut nous aider à mettre les données sous contrôle et quel est son rôle dans notre pipeline de données, comment Spark et Akka nous aident à traiter les données, et comment Cassandra stocke les données. Nous regarderons également  Mesos,  un gestionnaire de cluster.

 

Apache Spark

Apache Spark est un puissant moteur de traitement open-source construit autour de la vitesse, de la facilité d’utilisation et des analyses sophistiquées. Il a été développé à l’origine à l’UC Berkeley en 2009.

Vitesse, facilité d’utilisation et moteur unifié sont trois avantages fondamentaux d’Apache Spark. Continuez à lire…

Apache Mesos: C’est un noyau de systèmes distribués et Mesos est construit en utilisant les mêmes principes que le noyau Linux, seulement à un niveau d’abstraction différent. Le noyau Mesos fonctionne sur chaque machine et fournit des applications (par ex, Hadoop, Spark, Kafka, Elastic Search) avec des API pour la gestion et l’ordonnancement des ressources à travers des environnements entiers de datacenter et de cloud.

 

 

Akka

Akka est une boîte à outils et un runtime pour construire des applications hautement concurrentes, distribuées et résilientes axées sur les messages sur la JVM. Akka a été conçu pour permettre aux développeurs de créer facilement des applications réactives en utilisant un haut niveau d’abstraction. Il le fait d’une manière très naturelle et simple, sans avoir à traiter des concepts de bas niveau comme les pools de threads, les mutex et les blocages.

Il le fait en tirant parti du modèle d’acteur de la concurrence et de la tolérance aux pannes. Il s’agit d’un modèle puissant qui permet d’encapsuler et de modéliser le comportement et l’état de l’application sous la forme d’un acteur. Le principe clé d’un acteur est que l’application n’interagit avec lui que par le biais de messages et ne lui parle jamais directement. Cette isolation permet à Akka de gérer la monnaie de l’acteur.

 

Apache Cassandra

C’est un projet Apache de haut niveau né chez Facebook et construit sur Amazons Dynamo et Googles BigTable, est une base de données distribuée pour gérer de grandes quantités de données structurées à travers de nombreux serveurs de commodité, tout en fournissant un service hautement disponible et sans point de défaillance unique. Cassandra offre des capacités que les bases de données relationnelles et les autres bases de données NoSQL ne peuvent tout simplement pas égaler, telles que la disponibilité continue, les performances à l’échelle linéaire, la simplicité opérationnelle et la distribution aisée des données dans plusieurs centres de données et zones de disponibilité du cloud. L’architecture de Cassandra est responsable de sa capacité à évoluer, à performer et à offrir une disponibilité continue. Plutôt que d’utiliser une architecture maître-esclave héritée ou une architecture sharded manuelle et difficile à maintenir, Cassandra a une conception en  » anneau  » sans maître qui est élégante, facile à mettre en place et à maintenir.

 

Dans Cassandra, tous les nœuds jouent un rôle identique ; il n’y a pas de concept de nœud maître, tous les nœuds communiquant entre eux de manière égale. L’architecture construite pour l’échelle de Cassandra signifie qu’elle est capable de gérer de grandes quantités de données et des milliers d’utilisateurs ou d’opérations simultanées par seconde – même à travers plusieurs centres de données – aussi facilement qu’elle peut gérer des quantités beaucoup plus petites de données et de trafic utilisateur. L’architecture de Cassandra signifie également que, contrairement à d’autres systèmes maître-esclave ou sharded, elle n’a pas de point de défaillance unique et est donc capable d’offrir une véritable disponibilité et un temps de fonctionnement continus – il suffit d’ajouter de nouveaux nœuds à un cluster existant sans avoir à le démonter.

 

Apache Kafka

Kafka est l’un de ces systèmes qui est très simple à décrire à un haut niveau, mais qui a une incroyable profondeur de détails techniques lorsque vous creusez plus profondément. Kafka est un système de messagerie distribué de type publish-subscribe qui est conçu pour être rapide, évolutif et durable.

Comme de nombreux systèmes de messagerie de type publish-subscribe, Kafka maintient des flux de messages dans des topics. Les producteurs écrivent des données dans les sujets et les consommateurs lisent à partir des sujets. Comme Kafka est un système distribué, les sujets sont partitionnés et répliqués sur plusieurs nœuds.

Les messages sont simplement des tableaux d’octets et les développeurs peuvent les utiliser pour stocker n’importe quel objet dans n’importe quel format – String, JSON et Avro étant les plus courants. Il est possible d’attacher une clé à chaque message, auquel cas le producteur garantit que tous les messages ayant la même clé arriveront à la même partition. Lors de la consommation à partir d’un sujet, il est possible de configurer un groupe de consommateurs avec plusieurs consommateurs. Chaque consommateur d’un groupe de consommateurs lira les messages d’un sous-ensemble unique de partitions dans chaque sujet auquel il s’abonne, de sorte que chaque message est livré à un consommateur du groupe et que tous les messages avec la même clé arrivent au même consommateur.