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.
6 回答
尽管Apache Spark和Apache Ignite都利用了内存计算的强大功能,但它们解决了一些不同的用例,很少“竞争”同一任务 . 一些概念差异:
我想说Spark是交互式分析的好产品,而Ignite更适合实时分析和高性能事务处理 . Ignite通过提供高效且可扩展的内存中键值存储以及索引,查询数据和运行计算的丰富功能来实现这一目标 .
Ignite的另一个常见用途是分布式缓存,它通常用于提高与关系数据库或任何其他数据源交互的应用程序的性能 .
Apache Ignite是一个高性能,集成和分布式的内存中平台,用于实时计算和处理大规模数据集.Ignite是一个与数据源无关的平台,可以在RAM中的多个服务器之间分发和缓存数据提供前所未有的处理速度和海量应用程序可扩展性
Apache Spark(集群计算框架)是一种快速的内存数据处理引擎,具有富有表现力的开发API,允许数据工作者有效地执行需要快速迭代访问数据集的流,机器学习或SQL工作负载 . 通过允许用户程序将数据加载到集群的内存中并重复查询,Spark非常适合高性能计算和机器学习算法 .
Some conceptual differences:
Spark不存储数据,它从其他存储(通常是基于磁盘)加载数据以进行处理,然后在处理完成时丢弃数据 . 另一方面,Ignite提供具有ACID事务和SQL查询功能的分布式内存中键值存储(分布式缓存或数据网格) .
Spark用于非事务性的只读数据(RDD不支持就地突变),而Ignite支持非事务性(OLAP)有效负载以及完全符合ACID的事务(OLTP)
Ignite完全支持可以“无数据”的纯计算有效载荷(HPC / MPP) . Spark基于RDD,仅适用于数据驱动的有效负载 .
Conclusion:
Ignite和Spark都是内存计算解决方案,但它们针对不同的用例 .
在许多情况下,它们一起使用以获得优异的结果:
Ignite可以提供共享存储,因此状态可以从一个Spark应用程序或作业传递到另一个 .
Ignite可以为SQL提供索引,因此Spark SQL可以加速超过1,000x(spark不会索引数据)
使用文件而不是RDD时,Apache Ignite内存文件系统(IGFS)也可以在Spark作业和应用程序之间共享状态
尽管Apache Spark和Apache Ignite利用了内存计算的强大功能,但它们可以解决不同的用例 . Spark进程但不存储数据 . 它加载数据,处理它,然后丢弃它 . 另一方面,Ignite可用于处理数据,它还提供具有ACID兼容事务和SQL支持的分布式内存中键值存储 . Spark也适用于非事务性的只读数据,而Ignite支持非事务性和事务性工作负载 . 最后,Apache Ignite还支持HPC和MPP用例的纯计算有效负载,而Spark仅支持数据驱动的有效负载 .
Spark和Ignite可以很好地相互补充 . Ignite可以为Spark提供共享存储,因此状态可以从一个Spark应用程序或作业传递到另一个 . Ignite还可用于为分布式SQL提供索引,从而将Spark SQL加速最多1,000倍 .
尼基塔·伊万诺夫:http://www.odbms.org/blog/2017/06/on-apache-ignite-apache-spark-and-mysql-interview-with-nikita-ivanov/
Spark和Ignite一起工作吗?
是的,Spark和Ignite一起工作 .
简而言之
详细说明
Apache Spark是一个OLAP工具
Spark与其他组件
部署拓扑
Spark on YARN typology are discussed here .
Apache Ignite是一个OLTP工具
SQL概述
部署拓扑
Apache Spark 是一个处理框架 . 您告诉它从何处获取数据,提供有关如何处理该数据的一些代码,然后告诉它将结果放在何处 . 它主要用于对来自各种来源(甚至是同时来自多个数据库)的数据进行大规模分析,或者来自像Kafka这样的流媒体来源 . 它也可以用于ETL,比如在将最终结果放入其他数据库系统之前将数据转换和连接在一起 .
Apache Ignite 更像是内存中的分布式数据库,至少它实际上与SQL一起使用,同时还在同一系统中读取和写入数据 . 它还可以将数据读/写到其他数据库系统,同时充当中间的缓存层 . 最终,从2018年开始,它还支持磁盘存储,因此现在您可以将其用作一体化分布式数据库,缓存和处理框架 .
对于更复杂的分析,Apache Spark仍然更好,您可以从Apache Ignite获取Spark读取数据,但在许多情况下,现在可以使用Apache Ignite将处理和存储整合到单个系统中 .