Apache Spark vs Apache Ignite

actuellement, j'étudie les cadres Apache spark et apache ignite. Quelques différences de principe entre eux sont décrites dans cet article enflammer vs étincelle Mais j'ai réalisé que je ne comprends toujours pas leurs buts. Je veux dire pour quels problèmes étincelle plus préférable que d'enflammer et et vice versa?

22
demandé sur Normal 2016-03-16 16:20:15

4 réponses

je dirais que Spark est un bon produit pour l'analyse interactive, tandis que Ignite est meilleur pour l'analyse en temps réel et le traitement transactionnel de haute performance. Ignite atteint cet objectif en fournissant un stockage efficace et évolutif des valeurs clés en mémoire, ainsi que de riches capacités pour l'indexation, la interrogation des données et l'exécution de calculs.

une autre utilisation courante pour Ignite est la mise en cache distribuée, qui est souvent utilisée pour améliorer la performance des applications qui interagissent avec bases de données relationnelles ou toute autre source de données.

28
répondu Valentin Kulichenko 2016-03-16 22:42:39

Apache Ignite est une plate-forme mémoire intégrée et distribuée à haute performance pour le calcul et les transactions sur des ensembles de données à grande échelle en temps réel.Ignite est une plateforme agnostique-source de données et peut distribuer et mettre en cache des données sur plusieurs serveurs en RAM afin de fournir une vitesse de traitement sans précédent et une extensibilité massive de l'application.

Apache Spark (cluster computing framework) est un moteur de traitement de données en mémoire rapide avec des API de développement expressif pour permettre aux données les travailleurs pour exécuter efficacement la diffusion en continu, l'apprentissage machine ou les charges de travail SQL qui exigent un accès itératif rapide aux ensembles de données. En permettant aux programmes utilisateurs de charger des données dans la mémoire d'un cluster et de les interroger à plusieurs reprises, Spark est bien adapté aux algorithmes de calcul intensif et d'apprentissage automatique.

quelques différences conceptuelles:

Spark ne stocke pas les données, il charge les données pour les traiter à partir d'autres stockages, généralement sur disque, et puis écarte les données lorsque le traitement est terminé. Ignite, d'un autre côté, fournit un stock distribué en mémoire clé-valeur (cache distribué ou grille de données) avec des transactions acides et des capacités de requête SQL.

Spark est pour les non-transactionnelle, de données en lecture seule (Rdd ne prennent pas en charge sur place par mutation), tandis que d'Enflammer les prend en charge à la fois les non-transactionnelle (OLAP) des charges, ainsi que de l'ACIDE conforme transactions (OLTP)

Ignite supporte entièrement les charges utiles purement computationnelles (HPC / MPP) qui peuvent soyez "dataless". Spark est basé sur des RDDs et ne fonctionne que sur des charges utiles basées sur des données.

Conclusion:

Ignite et Spark sont des solutions de calcul en mémoire, mais elles ciblent des cas d'utilisation différents.

Dans de nombreux cas, ils sont utilisés ensemble pour atteindre des résultats supérieurs:

Ignite peut fournir un stockage partagé, de sorte que l'état peut être transmis d'une application D'étincelle ou d'un travail à un autre.

Ignite peut fournir SQL avec indexation so Spark SQL peut être accéléré Sur 1000 x (spark n'indexe pas les données)

lorsque vous travaillez avec des fichiers au lieu de RDDs, le système de fichiers en mémoire D'Apache Ignite (IGFS) peut aussi partager l'état entre les tâches Spark et les applications

15
répondu Nayan Sharma 2017-06-06 14:53:00

bien Qu'Apache Spark et Apache Ignite utilisent la puissance du calcul en mémoire, ils traitent différents cas d'utilisation. Spark traite mais ne stocke pas de données. Il charge les données, les traite, puis il se défait. Ignite, d'un autre côté, peut être utilisé pour traiter des données et il fournit également un stock distribué en mémoire clé-valeur avec des transactions conformes à L'acide et le soutien SQL. Spark est aussi pour les données non transactionnelles, en lecture seule alors que Ignite supporte les données non transactionnelles et transactionnelles les charges de travail. Enfin, Apache Ignite prend également en charge les charges utiles purement computationnelles pour les applications HPC et MPP, tandis que Spark ne fonctionne que sur des charges utiles basées sur des données.

L'étincelle et L'allumage peuvent se compléter très bien. Ignite peut fournir un stockage partagé pour Spark afin que l'État puisse être transmis d'une application Spark ou d'un travail à un autre. Ignite peut également être utilisé pour fournir du SQL distribué avec une indexation qui accélère le SQL Spark de jusqu'à 1000 X.

Par Nikita Ivanov: http://www.odbms.org/blog/2017/06/on-apache-ignite-apache-spark-and-mysql-interview-with-nikita-ivanov/

2
répondu Siva Kumar 2017-11-15 13:05:34

bien Qu'Apache Spark et Apache Ignite utilisent tous deux la puissance de l'informatique en mémoire, ils traitent des cas d'utilisation quelque peu différents et "rivalisent" rarement pour la même tâche. Certaines différences conceptuelles:

Spark doesn’t store data, it loads data for processing from other storages, usually disk-based, and then discards the data when the processing is finished. Ignite, on the other hand, provides a distributed in-memory key-value store (distributed cache or data grid) with ACID transactions and SQL querying capabilities.
Spark is for non-transactional, read-only data (RDDs don’t support in-place mutation), while Ignite supports both non-transactional (OLAP) payloads as well as fully ACID compliant transactions (OLTP)
Ignite fully supports pure computational payloads (HPC/MPP) that can be “dataless”. Spark is based on RDDs and works only on data-driven payloads.
-2
répondu Daneshkhan 2017-12-27 14:10:07