Actuellement, j'étudie Apache spark et Apache enflamment les frameworks.
Certaines différences de principe entre eux sont décrites dans cet article enflammer vs étinceler Mais j'ai réalisé que je ne comprends toujours pas leurs buts.
Je veux dire pour quels problèmes spark plus préférable que d'allumer et vice versa?
Je dirais que Spark est un bon produit pour l'analyse interactive, tandis qu'Ignite est meilleur pour l'analyse en temps réel et le traitement transactionnel haute performance. Ignite y parvient en fournissant une clé en mémoire efficace et évolutive- stockage de valeur, ainsi que de riches capacités pour l'indexation, l'interrogation des données et l'exécution de calculs.
Une autre utilisation courante d'Ignite est la mise en cache distribuée, qui est souvent utilisée pour améliorer les performances des applications qui interagissent avec les bases de données relationnelles ou toute autre source de données.
Apache Ignite est une plate-forme en mémoire hautes performances, intégrée et distribuée pour le calcul et la transaction en temps réel sur des ensembles de données à grande échelle.Ignite est une plate-forme indépendante de la source de données et peut distribuer et mettre en cache des données sur plusieurs serveurs en = RAM pour offrir une vitesse de traitement sans précédent et une évolutivité massive des applications.
Apache Spark (framework de calcul en cluster) est un moteur de traitement de données rapide en mémoire avec des API de développement expressives pour permettre aux travailleurs de données d'exécuter efficacement le streaming, l'apprentissage automatique ou les charges de travail SQL qui nécessitent un accès itératif rapide aux ensembles de données. En permettant aux programmes utilisateur de charger des données dans la mémoire d'un cluster et de les interroger à plusieurs reprises, Spark est bien adapté pour les algorithmes de calcul haute performance et d'apprentissage automatique.
Quelques différences conceptuelles:
Spark ne stocke pas de données, il charge les données pour le traitement à partir d'autres stockages, généralement sur disque, puis supprime les données lorsque le traitement est terminé. Ignite, d'autre part, fournit un magasin de valeurs-clés en mémoire distribué (cache distribué ou grille de données) avec des transactions ACID et des capacités de requête SQL.
Spark est destiné aux données en lecture seule non transactionnelles (les RDD ne prennent pas en charge la mutation sur place), tandis qu'Ignite prend en charge les charges utiles non transactionnelles (OLAP) ainsi que les transactions entièrement conformes ACID (OLTP)
Ignite prend entièrement en charge les charges utiles de calcul pur (HPC/MPP) qui peuvent être "sans données". Spark est basé sur les RDD et ne fonctionne que sur les charges utiles basées sur les données.
Conclusion:
Ignite et Spark sont tous deux des solutions informatiques en mémoire mais ciblent des cas d'utilisation différents.
Dans de nombreux cas, ils sont utilisés ensemble pour obtenir des résultats supérieurs:
Ignite peut fournir un stockage partagé, de sorte que l'état peut être passé d'une application ou d'une tâche Spark à une autre).
Ignite peut fournir à SQL une indexation, donc Spark SQL peut être accéléré plus de 1 000x (spark ne indexe pas les données)
Lorsque vous travaillez avec des fichiers au lieu de RDD, le système de fichiers en mémoire Apache Ignite (IGFS) peut également partager l'état entre les travaux et les applications Spark
Oui, Spark et Ignite fonctionnent ensemble.
Ignite vs Spark
Ignite est une base de données distribuée en mémoire plus axée sur le stockage de données et gère les mises à jour transnationales sur les données, puis sert les demandes des clients. Apache Spark est un moteur de calcul MPP plus orienté vers les charges utiles spécifiques à l'analyse, au ML, au graphique et à l'ETL.
Apache Spark est un système informatique en grappe à usage général. Il s'agit d'un moteur optimisé qui prend en charge les graphiques d'exécution généraux. Il prend également en charge un riche ensemble d'outils de niveau supérieur, notamment Spark SQL pour SQL et le traitement de données structurées, MLlib pour l'apprentissage automatique, GraphX pour le traitement de graphiques et Spark Streaming.
Spark sur la typologie YARN est discuté ici .
Ignite est une base de données distribuée centrée sur la mémoire , une mise en cache et une plate-forme de traitement pour les charges de travail transnationales, analytiques et en streaming offrant des vitesses en mémoire à l'échelle du pétaoctet. Ignite inclut également une prise en charge de premier niveau pour la gestion et les opérations de cluster, la messagerie prenant en charge les clusters et les technologies de déploiement nul. Ignite fournit également la prise en charge des transactions ACID complètes couvrant la mémoire et les sources de données facultatives.
Bien qu'Apache Spark et Apache Ignite utilisent la puissance de l'informatique en mémoire, ils répondent à différents cas d'utilisation. Spark traite mais ne stocke pas de données. Il se charge d'autre part, Ignite peut être utilisé pour traiter les données et il fournit également un magasin de valeurs-clés en mémoire distribué avec des transactions conformes à ACID et une prise en charge SQL. Spark est également destiné aux données non transactionnelles en lecture seule tandis qu'Ignite prend en charge les charges de travail non transactionnelles et transactionnelles. Enfin, Apache Ignite prend également en charge les charges utiles purement informatiques pour les cas d'utilisation HPC et MPP tandis que Spark = fonctionne uniquement sur les charges utiles basées sur les données.
Spark et Ignite peuvent très bien se compléter. Ignite peut fournir un stockage partagé pour Spark afin que l'état puisse être passé d'une Spark application ou tâche à une autre. Ignite peut également être utilisé pour fournir du SQL distribué avec indexation) qui accélère Spark SQL jusqu'à 1000x.
Par Nikita Ivanov: http://www.odbms.org/blog/2017/06/on-Apache-ignite-Apache-spark-and-mysql-interview-with-nikita-ivanov/
Apache Spark est un framework de traitement. Vous lui dites où obtenir des données, fournissez du code sur la façon de traiter ces données, puis lui dites où placer les résultats. C'est un moyen d'exécuter facilement et de manière fiable la logique de calcul sur un tas de nœuds d'un cluster sur des données de n'importe quelle source (qui sont ensuite conservées en mémoire pendant le traitement). Il est principalement destiné à l'analyse à grande échelle de données provenant de diverses sources (même de plusieurs bases de données à la fois), ou de sources de streaming comme Kafka. Il peut également être utilisé pour ETL, comme la transformation et la jonction de données avant de placer les résultats finaux dans un autre système de base de données.
Apache Ignite est plus une base de données distribuée en mémoire, du moins c'est ainsi que cela a commencé. Il a une clé/valeur et une API SQL, vous pouvez donc stocker et lire des données de différentes manières et exécuter des requêtes comme vous le feriez pour n'importe quelle autre base de données SQL. Il prend également en charge l'exécution de votre propre code (similaire à Spark) afin que vous puissiez effectuer un traitement qui ne fonctionnerait pas vraiment avec SQL, tout en lisant et en écrivant les données dans le même système. Il peut également lire/écrire des données sur d'autres systèmes de base de données tout en agissant comme une couche de cache au milieu. Finalement, à partir de 2018, il prend également en charge le stockage sur disque, vous pouvez donc maintenant l'utiliser comme base de données distribuée, cache et infrastructure de traitement tout-en-un.
Apache Spark est toujours meilleur pour les analyses plus complexes, et vous pouvez avoir Spark lire les données d'Apache Ignite, mais pour de nombreux scénarios, il est maintenant possible de consolider le traitement et stockage dans un seul système avec Apache Ignite.
Je suis en retard pour répondre à cette question, mais permettez-moi d'essayer de partager mon point de vue à ce sujet.
Ignite n'est peut-être pas prêt à être utilisé en production pour les applications d'entreprise, car certaines fonctionnalités importantes telles que la sécurité ne sont disponibles que dans Gridgain (wrapper over Ignite)
La liste complète des fonctionnalités peut être trouvée à partir du lien ci-dessous