Apache Spark vs Apache Storm
Le besoin de streaming de données en temps réel augmente de manière exponentielle en raison de l’augmentation des données en temps réel. Les technologies de streaming étant à la tête du monde du Big Data, il peut être difficile pour les utilisateurs de choisir la plateforme de streaming en temps réel appropriée. Deux des technologies en temps réel les plus populaires que l’on pourrait envisager d’opter sont Apache Spark et Apache Storm.
Une différence clé majeure entre les frameworks Spark et Storm est que Spark effectue des calculs Data-Parallèle, tandis que Storm occupe des calculs Task-Parallèle
Apache Spark
Apache Spark est un framework technologique de calcul en cluster, polyvalent et rapide à l’allumage, utilisé pour des calculs rapides sur le traitement de données à grande échelle. Il peut gérer à la fois des charges de travail d’analyse et de traitement de données par lots et en temps réel.
Apache Storm
Apache Storm est un système de calcul de traitement de flux en temps réel, évolutif et tolérant aux pannes, à code source ouvert. C’est un cadre pour le traitement des données distribuées en temps réel, qui se concentre sur le traitement des flux ou le traitement des événements. Il peut être utilisé avec n’importe quel langage de programmation et peut être intégré en utilisant n’importe quelle technologie de file d’attente ou de base de données.
Différences entre Spark et Storm
- Modèle de traitement : Apache spark fournit un traitement par lot alors que storm fournit un traitement par micro lot
- Langage de programmation : Apache spark supporte moins de langages comme Java, Scala alors que storm en revanche supporte de multiples langages, comme Scala, Java, Clojure.
- Sources de flux : Apache a utilisé HDFS tandis qu’Apache Storm utilise spout.
- Messagerie : Apache apark utilise Akka, Netty tandis qu’Apache storm utilise ZeroMQ, Netty
- Gestion des ressources : Pour Apache spark Yarn et Meson sont responsables tandis que pour Apache storm Yarn et Mesos sont responsables.
- Latence : Latence plus élevée par rapport à Apache Spark tandis qu’Apache storm fournit une meilleure latence basse avec moins de contraintes
- Primitives de flux : Apache spark utilise DStream alors qu’Apache Storm utilise Tuple, Partition
- Coût de développement : Apache spark utilise le même code pour le traitement par lot et par flux alors que dans Apache storm le même code ne peut pas être utilisé.
- Persistance : Apache spark utilise par RDD alors qu’Apache storm utilise MapState
- Tolérance aux pannes : Dans Apache spark il gère le redémarrage des travailleurs via le gestionnaire de ressources qui peut être YARN, Mesos ou son gestionnaire autonome alors que dans Apache storm si le processus échoue le processus superviseur le redémarrera automatiquement car la gestion de l’état est gérée par zookeeper
- Provisionnement : Apache spark supporte la surveillance de base en utilisant Ganglia alors qu’Apache storm utilise Apache Ambari
- Débit : Apache spark sert 100k enregistrements par nœud par seconde alors qu’Apache storm sert 10k enregistrements par nœud par seconde.
- Gestion de l’état : Le changement et le maintien de l’état dans Apache Spark peuvent être mis à jour via UpdateStateByKey, mais aucune stratégie pluggable ne peut être appliquée dans le système externe pour la mise en œuvre de l’état. Alors que Storm ne fournit pas de cadre pour le stockage de toute sortie de boulon intervenant comme un état. Par conséquent, chaque application doit créer un état pour elle-même chaque fois que nécessaire.
- Spécialité : Apache spark utilise un traitement unifié (batch, SQL etc.) alors qu’Apache storm utilise un RPC distribué
Apache Storm et Apache Spark sont d’excellentes solutions qui résolvent le problème de l’ingestion et de la transformation du streaming.
Lire la suite… http://entradasoft.com/blogs/apache-spark-vs-apache-storm