2016-03-16 201 views
18

目前我正在学习apache spark和apache ignite框架。它们之间的一些原则差异在本文中描述ignite vs spark 但是我意识到我仍然不明白他们的目的。我的意思是,哪些问题比点燃更容易出现问题,反之亦然?Apache Spark vs Apache Ignite

+2

的[点燃提案(https://wiki.apache.org/incubator/IgniteProposal)给出的它VS火花&Hadoop的一个很好的概述。 –

回答

23

我会说Spark是一款用于交互式分析的好产品,而Ignite更适合实时分析和高性能事务处理。 Ignite通过提供高效且可扩展的内存中键值存储以及索引,查询数据和运行计算的丰富功能来实现这一点。

Ignite的另一个常见用途是分布式缓存,它通常用于提高与关系数据库或任何其他数据源交互的应用程序的性能。

+5

感谢您的解释,但是交互式分析和实时分析有什么区别? – mfudi

+0

我遇到了这个问题,我也对这个问题感兴趣。我认为交互式分析通常意味着通过将数据带入内存来多次分析稳定数据(所以火花非常适合于机器学习)。实时分析意味着实时可变数据,我认为Ignite更适合基于其缓存。 @瓦伦丁,你觉得怎么样? – Tom

+2

嗯,可能OLAP和OLTP在这里是更正确的术语。前者意味着运行比较少见的大型大多数只读查询,而后者则是小型查询的高吞吐量。 Ignite最初是为OLTP设计的,但目前也针对OLAP。 –

12

Apache Ignite是一款高性能,集成和分布式内存平台,用于实时计算和处理大规模数据集.Ignite是一个与数据源无关的平台,可跨数据分发和缓存数据RAM中的多个服务器提供前所未有的处理速度和巨大的应用程序可扩展性。

Apache的火花(集群计算架构)是一种快速,内存数据处理引擎与表现力的开发API,允许数据工作者有效地执行流,机器学习或需要对数据集快速迭代访问SQL工作负载。 通过允许用户程序将数据加载到群集内存并反复查询,Spark非常适合高性能计算和机器学习算法。

某些概念上的差异:

火花不存储数据时,它从其它存储器加载用于处理数据,通常是基于磁盘的,然后当完成了加工丢弃该数据。另一方面,Ignite通过ACID事务和SQL查询功能提供分布式内存键值存储(分布式缓存或数据网格)。

Spark是对非事务,只读数据(RDDS不支持就地突变),而点燃支持非事务性的(OLAP)有效载荷,以及完全符合ACID事务(OLTP)

Ignite完全支持可以“无数据”的纯计算有效载荷(HPC/MPP)。 Spark基于RDD,仅适用于数据驱动的有效载荷。

结论:

点燃和火花都在内存计算解决方案,但它们针对不同的使用情况。

在许多情况下,它们被一起使用,以实现优异的结果:

的Ignite可以提供共享存储,所以状态可以从一个火花应用程序或作业到另一个传递。

的Ignite可以为用户提供索引SQL使SQL星火可以在1000倍,加速(火花不会索引数据)

当文件,而不是RDDS,Apache的点燃内存中的文件系统工作(胰岛素样生长因子)也可以共享Spark作业和应用程序之间的状态

+0

谢谢你的回答。我仍然有点困惑。除了“数据网格”之外,apache ignite还提供了“计算网格”,它看起来与集群计算框架非常相似。如果我已经使用apache ignite作为数据存储,我是否真的需要实时处理的火花? – Normal

+2

Ignite更适合构建联机事务处理(OLTP)解决方案,而不适用于联机分析处理(OLAP).Spark适用于Ignite将更好地用于数据管理和查询的分析。 –

2

虽然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/

-2

虽然这两个Apache的星火和Apache点燃利用内存计算的力量,他们的地址有所不同的使用情况,也很少“竞争”为同一任务。某些概念上的差异:

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.