現在、Apache sparkとApacheがフレームワークに点火することを研究しています。
それらの間のいくつかの原則的な違いがこの記事で説明されています 点火vs火花 しかし、私はまだそれらの目的を理解していないことに気付きました。
私はどの問題についてspark発火よりも好ましい、またはその逆ですか?
Spark=はインタラクティブ分析に適した製品ですが、Igniteはリアルタイム分析と高性能トランザクション処理に適しています。バリューストレージ、インデックス作成、データのクエリ、計算の実行のための豊富な機能。
Igniteのもう1つの一般的な用途は分散キャッシュです。これは、リレーショナルデータベースや他のデータソースとやり取りするアプリケーションのパフォーマンスを向上させるためによく使用されます。
Apache Igniteは、大規模なデータセットをリアルタイムで計算および処理するための、高性能で統合および分散されたインメモリプラットフォームです。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は共有ストレージを提供できるため、1つのSparkアプリケーションまたはジョブから別のアプリケーションまたはジョブに状態を渡すことができます。
IgniteはSQLにインデックス付けを提供できるため、Spark SQLは1,000倍以上高速化できます(sparkはデータにインデックス付けしません)
RDDの代わりにファイルを使用する場合、Apache Ignite In-Memory File System(IGFS)はSparkジョブとアプリケーション間で状態を共有することもできます
はい、SparkとIgniteは連動します。
IgniteとSpark
Igniteは、データストレージに重点を置いたインメモリ分散データベースであり、データの国境を越えた更新を処理し、クライアントの要求に対応します。 Apache SparkはMPP計算エンジンであり、分析、ML、グラフ、およびETL固有のペイロードにより適しています。
Apache Sparkは、汎用クラスターコンピューティングシステムです。一般的な実行グラフをサポートする最適化されたエンジンです。また、SQLおよび構造化データ処理用のSpark SQL、機械学習用のMLlib、グラフ処理用のGraphX、Sparkストリーミングなどの高レベルのツールセットもサポートしています。
YARNタイポロジーのスパークについてはここで説明します 。
Igniteは、メモリ中心の分散データベース、キャッシング、およびペタバイト規模のメモリ内速度を提供する、国境を越えた分析およびストリーミングワークロード用の処理プラットフォームです。 Igniteには、クラスターの管理と運用、クラスター対応のメッセージング、ゼロデプロイメントテクノロジーのファーストクラスレベルのサポートも含まれています。 Igniteは、 ACIDトランザクションスパニングメモリおよびオプションのデータソースのサポートも提供します。
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倍高速化するインデックス付けを提供するためにも使用できます。
Apache Sparkは処理フレームワークです。データを取得する場所を指定し、そのデータを処理する方法に関するコードを提供してから、結果を配置する場所を指定します。これは、任意のソース(処理中にメモリ内に保持される)からのデータに対して、クラスター内の多数のノードでコンピューティングロジックを簡単に確実に実行する方法です。主に、さまざまなソース(一度に複数のデータベースからでも)またはKafkaなどのストリーミングソースからのデータの大規模な分析を目的としています。また、最終結果を他のデータベースシステムに配置する前にデータを変換および結合するなど、ETLに使用することもできます。
Apache Igniteは、より多くのインメモリ分散データベースです。少なくともそれが開始された方法です。キー/値とSQL APIがあるため、さまざまな方法でデータを保存および読み取り、他のSQLデータベースと同様にクエリを実行できます。また、独自のコード(Sparkに似ています)の実行もサポートしているため、SQLで実際には機能しない処理を行うことができ、同時に同じシステムでデータを読み書きすることもできます。また、中間のキャッシュレイヤーとして機能しながら、他のデータベースシステムに対してデータの読み取り/書き込みを行うことができます。最終的には、2018年の時点で、ディスク上のストレージもサポートしているため、オールインワンの分散データベース、キャッシュ、および処理フレームワークとして使用できるようになりました。
Apache Sparkは、より複雑な分析には依然として優れており、SparkにApache Igniteからデータを読み取らせることができますが、多くのシナリオで、処理とストレージを単一のシステムに統合することが可能になりましたApache Ignite。
私はこの質問に答えるのが遅れていますが、これに関する私の見解を共有させてください。
Igniteは、セキュリティなどのいくつかの重要な機能がGridgain(Igniteのラッパー)でのみ利用できるため、エンタープライズアプリケーションの運用環境で使用する準備ができていない
機能の完全なリストは、以下のリンクから見つけることができます