2016-03-16 37 views
18

現在、私はapache sparkとapache igniteフレームワークを研究しています。それらの間のいくつかの主な違いがこの記事で説明されていますignite vs spark しかし、私はまだ彼らの目的を理解していないことに気付きました。私はどの問題が点火よりも好ましい点火を意味し、逆もまた同様である。Apache SparkとApache Ignite

+2

[提案をイグナイト](https://wiki.apache.org/incubator/IgniteProposal)がスパーク&Hadoopの対それの良い概要を示します。 –

答えて

23

私は、Sparkはインタラクティブな分析のための優れた製品ですが、Igniteはリアルタイム分析と高性能トランザクション処理に適していると言います。 Igniteは、効率的でスケーラブルなメモリ内のキーと値のストレージを提供するだけでなく、索引付け、データの問合せ、および計算の実行のための豊富な機能を提供することで、これを実現します。

Igniteのもう1つの一般的な使用方法は、リレーショナルデータベースや他のデータソースとやりとりするアプリケーションのパフォーマンスを向上させるためによく使われる分散キャッシュです。

+5

説明していただきありがとうございますが、インタラクティブなアナリティクスとリアルタイムのアナリティクスの違いは何ですか? – mfudi

+0

私は質問に出くわしました。私はこの質問にも興味があります。インタラクティブな分析は、しばしばデータをメモリに持たせることで安定したデータを何度も分析することを意味します(スパークは機械学習に非常に適しています)。リアルタイム分析とはリアルタイムで変更可能なデータを意味し、Igniteはそのキャッシュに基づいてより適していると思います。 @バレンチン、どう思いますか? – Tom

+2

さて、おそらくOLAPとOLTPはもっと正しい用語です。前者は、比較的まれな大規模でほとんどが読み取り専用のクエリを実行することを意味し、後者では、より小さいクエリのスループットが高いことを意味します。 Igniteは当初はOLTP用に設計されていましたが、現在OLAPにも対応しています。 –

12

Apache Igniteは、大規模なデータセットをリアルタイムでコンピューティングおよびトランザクションするための、高性能で統合された分散メモリ内プラットフォームです.Igniteは、データソースに依存しないプラットフォームであり、これまでにない処理速度と大規模なアプリケーションのスケーラビリティを実現するために、複数のサーバーをRAMに搭載しています。

Apache Spark(クラスタコンピューティングフレームワーク)は、表現力豊かな開発APIを備えた高速のメモリ内データ処理エンジンであり、データワーカに迅速な反復アクセスが必要なストリーミング、機械学習またはSQLワークロードを効率的に実行できます。 ユーザプログラムがクラスタのメモリにデータをロードして繰り返しクエリを実行できるようにすることで、Sparkは高性能コンピューティングや機械学習アルゴリズムに適しています。

いくつかの概念の違い:

スパークは、データが格納されていないが、それは通常、他のストレージからディスクベースの処理のためのデータをロードし、処理が終了すると、データを破棄します。一方、IgniteはACIDトランザクションとSQLクエリ機能を備えた分散メモリ内キーストア(分散キャッシュまたはデータグリッド)を提供します。

スパークは、非トランザクション用で、読み取り専用のデータ(RDDSインプレース変異をサポートしていない)、のIgniteは、非トランザクション(OLAP)のペイロードだけでなく、完全にACID準拠したトランザクションの両方をサポートしながら、(OLTP)

Igniteは、「データレス」となる純粋な計算ペイロード(HPC/MPP)を完全にサポートしています。 SparkはRDDに基づいており、データ駆動のペイロードでのみ動作します。

結論:

点火し、スパークの両方におけるメモリコンピューティング・ソリューションであるが、それらは異なるユースケースを標的とします。

のIgniteは、共有ストレージを提供することができるので、状態は、別のスパークアプリケーションまたはジョブから渡すことができる。

多くの場合、それらは優れた結果を達成するために一緒に使用されます。

のIgniteは(スパークしないのインデックスデータ)

代わりRDDSは、ApacheのIgniteインメモリファイルシステムのファイルで作業(そのSQLは1,000倍の上に加速させることができるスパークのIGFをインデックスとSQLを提供することができます)は、Sparkのジョブとアプリケーションの間で状態を共有することもできます。

+0

ありがとうございました。私はまだ少し混乱しています。 "データグリッド"に加えて、Apacheのigniteは、クラスタコンピューティングフレームワークに非常によく似た "計算グリッド"を提供します。私が既にデータ用のストレージとしてApacheのigniteを使用していたのであれば、本当にリアルタイム処理のためにスパークが必要ですか? – Normal

+2

Igniteはオンライントランザクション処理(OLTP)ソリューションの構築に適しており、Online Analytical Processing(OLAP)のためには適していません.Sparkは、Igniteがデータ管理およびクエリに適しています。 –

2

Apache SparkとApache Igniteは、インメモリ・コンピューティングのパワーを利用していますが、スパークは処理しますが、データは保存しません。データをロードして処理し、破棄します。一方、Igniteはデータの処理に使用でき、ACID準拠のトランザクションとSQLサポートを備えた分散メモリ内キーストアを提供します。 Igniteは非トランザクションとトランザクションのワークロードをサポートしていますが、Sparkは非トランザクションの読み取り専用データ用です。最後に、Apache Igniteは、HPCおよびMPPユースケースの純粋に計算可能なペイロードもサポートしますが、Sparkはデータ駆動型ペイロードのみで動作します。

スパークとイグナイトはお互いを非常によく補完することができます。 Igniteは、Sparkの共有ストレージを提供できるため、あるSparkアプリケーションまたはジョブから別のSparkアプリケーションに状態を渡すことができます。 Igniteは、分散SQLにSpark SQLを最大1,000倍高速化する索引付け機能を提供するためにも使用できます。ニキータイワノフによって

:ApacheのスパークとApacheのIgniteの両方は、インメモリコンピューティングのパワーを活用もののhttp://www.odbms.org/blog/2017/06/on-apache-ignite-apache-spark-and-mysql-interview-with-nikita-ivanov/

-2

、彼らは多少異なるユースケースに対処していないし、めったに同じタスクのための「競争」。いくつかの概念の違い:

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. 
関連する問題