Apache Spark vs Apache Ignite
apache-spark (6)
¿Spark e Ignite trabajan juntos?
Sí, Spark and Ignite trabajan juntos.
En breve
Encender contra chispa
Ignite es una base de datos distribuida en memoria más enfocada en el almacenamiento de datos y en el manejo de actualizaciones transnacionales de datos, y luego atiende las solicitudes de los clientes. Apache Spark es un motor de cálculo MPP que está más inclinado hacia el análisis, ML, Graph y las cargas útiles específicas de ETL.
En detalle
Apache Spark es una herramienta OLAP
Apache Spark es un sistema de computación en clúster de propósito general. Es un motor optimizado que soporta gráficos de ejecución general. También es compatible con un amplio conjunto de herramientas de alto nivel que incluyen Spark SQL para SQL y procesamiento de datos estructurado, MLlib para aprendizaje automático, GraphX para procesamiento de gráficos y Spark Streaming.
Chispa con otros componentes
Topología de despliegue
La chispa en la tipología YARN se discute aquí .
Apache Ignite es una herramienta OLTP
Ignite es una plataforma de procesamiento , almacenamiento en caché y base de datos distribuida centrada en la memoria para cargas de trabajo transnacionales, analíticas y de transmisión por secuencias que ofrecen velocidades en memoria a una escala de petabyte. Ignite también incluye soporte de nivel de primera clase para administración y operaciones de clústeres, mensajería compatible con clústeres y tecnologías de implementación cero. Ignite también proporciona soporte para transacciones ACID completas que abarcan memoria y fuentes de datos opcionales.
Visión general de SQL
Topología de despliegue
Actualmente estoy estudiando Apache spark y Apache ignite frameworks.
En este artículo se describen algunas de las principales diferencias entre ignite vs spark. Pero me di cuenta de que todavía no entiendo sus propósitos.
Quiero decir, ¿para qué problemas son más preferibles que los de encendido y viceversa?
Apache Ignite es una plataforma de memoria de alto rendimiento, integrada y distribuida para la computación y la transacción en conjuntos de datos a gran escala en tiempo real. Ignite es una plataforma independiente de origen de datos y puede distribuir y almacenar en caché datos en múltiples servidores en la RAM. para ofrecer una velocidad de procesamiento sin precedentes y una escalabilidad masiva de las aplicaciones.
Apache Spark (marco de computación en clúster) es un motor rápido de procesamiento de datos en memoria con API de desarrollo expresivo que permite a los trabajadores de datos ejecutar de manera eficiente el flujo de datos, el aprendizaje automático o el trabajo de SQL que requieren un acceso iterativo rápido a los conjuntos de datos. Al permitir que los programas del usuario carguen datos en la memoria de un clúster y lo consulten repetidamente, Spark es ideal para computación de alto rendimiento y algoritmos de aprendizaje automático.
Algunas diferencias conceptuales:
Spark no almacena datos, carga datos para procesarlos desde otros almacenamientos, generalmente basados en disco, y luego los descarta cuando finaliza el procesamiento. Ignite, por otro lado, proporciona un almacén distribuido de clave-valor en memoria (caché distribuida o cuadrícula de datos) con transacciones ACID y capacidades de consulta de SQL.
Spark es para datos de solo lectura no transaccionales (los RDD no admiten la mutación en el lugar), mientras que Ignite admite tanto las cargas útiles no transaccionales (OLAP) como las transacciones totalmente compatibles con ACID (OLTP)
Ignite es totalmente compatible con las cargas útiles computacionales puras (HPC / MPP) que pueden ser "sin datos". Spark se basa en RDD y funciona solo en cargas útiles basadas en datos.
Conclusión:
Ignite y Spark son soluciones informáticas en memoria, pero se dirigen a diferentes casos de uso.
En muchos casos, se utilizan juntos para lograr resultados superiores:
Ignite puede proporcionar almacenamiento compartido, por lo que el estado puede pasar de una aplicación o trabajo Spark a otro.
Ignite puede proporcionar indexación a SQL para que Spark SQL pueda acelerarse más de 1.000x (spark no indexa los datos)
Cuando se trabaja con archivos en lugar de RDD, el sistema de archivos en memoria de Apache Ignite (IGFS) también puede compartir el estado entre los trabajos Spark y las aplicaciones
Aunque Apache Spark y Apache Ignite utilizan el poder de la computación en memoria, tratan diferentes casos de uso. Chispa procesa pero no almacena datos. Carga los datos, los procesa y luego los descarta. Ignite, por otro lado, puede usarse para procesar datos y también proporciona un almacén de valor-clave en memoria distribuido con transacciones compatibles con ACID y soporte de SQL. Spark también es para datos de solo lectura, no transaccionales, mientras que Ignite admite cargas de trabajo transaccionales y no transaccionales. Por último, Apache Ignite también admite cargas útiles puramente computacionales para casos de uso de HPC y MPP, mientras que Spark funciona solo en cargas útiles basadas en datos.
Chispa e ignición pueden complementarse muy bien. Ignite puede proporcionar almacenamiento compartido para Spark para que el estado pueda pasar de una aplicación o trabajo de Spark a otro. Ignite también se puede usar para proporcionar SQL distribuido con indexación que acelera Spark SQL hasta 1,000x.
Por Nikita Ivanov: http://www.odbms.org/blog/2017/06/on-apache-ignite-apache-spark-and-mysql-interview-with-nikita-ivanov/
Aunque tanto Apache Spark como Apache Ignite utilizan el poder de la computación en memoria, tratan casos de uso algo diferentes y rara vez "compiten" por la misma tarea. Algunas diferencias conceptuales:
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.
Yo diría que Spark es un buen producto para análisis interactivo, mientras que Ignite es mejor para análisis en tiempo real y procesamiento transaccional de alto rendimiento. Ignite logra esto al proporcionar un almacenamiento de valor-clave en la memoria eficiente y escalable, así como capacidades ricas para indexar, consultar los datos y realizar cálculos.
Otro uso común de Ignite es el almacenamiento en caché distribuido, que a menudo se utiliza para mejorar el rendimiento de las aplicaciones que interactúan con bases de datos relacionales o cualquier otra fuente de datos.
Apache Spark es un framework de procesamiento. Usted le dice dónde obtener los datos, proporciona un código sobre cómo procesar esos datos y luego le dice dónde colocar los resultados. Es una forma de ejecutar fácilmente la lógica de computación de manera confiable en un conjunto de nodos en un clúster en datos de cualquier fuente (que luego se mantiene en la memoria durante el procesamiento). Está destinado principalmente para el análisis a gran escala de datos de varias fuentes (incluso de varias bases de datos a la vez) o de fuentes de transmisión como Kafka. También se puede utilizar para ETL, como transformar y unir datos antes de poner los resultados finales en algún otro sistema de base de datos.
Apache Ignite es más una base de datos distribuida en memoria, al menos así es como comenzó. Tiene una clave / valor y una API de SQL, por lo que puede almacenar y leer datos de varias maneras y ejecutar consultas como lo haría con cualquier otra base de datos SQL. También admite la ejecución de su propio código (similar a Spark), por lo que puede hacer un procesamiento que realmente no funcionaría con SQL, mientras que también lee y escribe los datos en el mismo sistema. También puede leer / escribir datos en otros sistemas de bases de datos mientras actúa como una capa de caché en el medio. Finalmente, a partir de 2018, también es compatible con el almacenamiento en disco, por lo que ahora puede usarlo como una base de datos, caché y marco de procesamiento todo en uno distribuidos.
Apache Spark aún es mejor para analíticas más complejas, y puede hacer que Spark lea datos de Apache Ignite, pero para muchos escenarios ahora es posible consolidar el procesamiento y el almacenamiento en un solo sistema con Apache Ignite.