Apache Spark 与 Apache Ignite

Apache Spark vs Apache Ignite

目前正在研究Apache spark 和Apache ignite 框架。

本文描述了它们之间的一些原理差异ignite vs spark但是我发现我仍然不明白它们的用途。

我的意思是对于哪些问题,spark 比 ignite 更可取,反之亦然?

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

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

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

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

一些概念上的差异:

Spark 不存储数据,它从其他存储(通常基于磁盘)加载数据进行处理,然后在处理完成后丢弃数据。另一方面,Ignite 提供具有 ACID 事务和 SQL 查询功能的分布式内存中键值存储(分布式缓存或数据网格)。

Spark 适用于非事务性、只读数据(RDD 不支持就地突变),而 Ignite 支持非事务性 (OLAP) 有效负载以及完全符合 ACID 的事务 (OLTP)

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

结论:

Ignite 和 Spark 都是内存计算解决方案,但它们针对不同的用例。

在很多情况下,它们一起使用可以取得更好的效果:

Ignite 可以提供共享存储,因此状态可以从一个 Spark 应用程序或作业传递到另一个。

Ignite 可以提供 SQL 索引,因此 Spark SQL 可以加速超过 1,000 倍(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/

尽管 Apache Spark 和 Apache Ignite 都利用了内存计算的强大功能,但它们处理的用例有些不同,很少“竞争”相同的任务。一些概念上的差异:

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.

A​​pache Spark 是一个处理框架。你告诉它从哪里获取数据,提供一些关于如何处理数据的代码,然后告诉它把结果放在哪里。这是一种轻松可靠地 运行 跨集群中的一堆节点计算来自任何来源的数据(然后在处理过程中保存在内存中)的逻辑的方法。它主要用于对来自各种来源(甚至同时来自多个数据库)或来自 Kafka 等流媒体来源的数据进行大规模分析。它还可以用于 ETL,例如在将最终结果放入其他数据库系统之前将数据转换和连接在一起。

A​​pache Ignite 更像是一个内存分布式数据库,至少它是这样开始的。它有一个 key/value 和 SQL API,因此您可以以各种方式存储和读取数据,并且 运行 查询就像您对任何其他 SQL 数据库一样。它还支持 运行 自己的代码(类似于 Spark),这样您就可以进行一些 SQL 无法真正工作的处理,同时还可以在同一个系统中读取和写入所有数据。它还可以 read/write 数据到其他数据库系统,同时充当中间的缓存层。最终,截至 2018 年,它还支持磁盘存储,因此现在您可以将它用作一体化的分布式数据库、缓存和处理框架。


Apache Spark 仍然更适合更复杂的分析,您可以让 Spark 从 Apache Ignite 读取数据,但对于许多场景,现在可以使用 Apache Ignite 将处理和存储整合到一个系统中。

Spark 和 Ignite 可以一起使用吗?

是的,Spark 和 Ignite 一起工作。

简而言之

Ignite vs. Spark

Ignite is an in-memory distributed database more focused on data storage and handles transnational updates on data, then serves client requests. Apache Spark is an MPP compute engine which is more inclined towards analytics, ML, Graph, and ETL specific payloads.


详细

Apache Spark 是一个 OLAP 工具

Apache Spark is a general-purpose cluster computing system. It's an optimized engine that supports general execution graphs. It also supports a rich set of higher-level tools including Spark SQL for SQL and structured data processing, MLlib for machine learning, GraphX for graph processing, and Spark Streaming.

Spark 与其他组件

部署拓扑

Spark on YARN typology is discussed here.


Apache Ignite 是一个 OLTP 工具

Ignite is a memory-centric distributed database, caching, and processing platform for transnational, analytical, and streaming workloads delivering in-memory speeds at the petabyte scale. Ignite also includes first-class level support for cluster management and operations, cluster-aware messaging, and zero-deployment technologies. Ignite also provides support for full ACID transactions spanning memory and optional data sources.

SQL 概述

部署拓扑

我来晚了回答这个问题,但让我试着分享一下我对此的看法。

Ignite 可能尚未准备好用于企业应用程序的生产,因为安全性等一些重要功能仅在 Gridgain(Ignite 上的包装器)中可用

可以从下面找到完整的功能列表link

https://www.gridgain.com/products/gridgain-vs-ignite