現在、私は Apache spark と Apache ignite フレームワークを研究しています。
それらのいくつかの原則の違いは、この記事ignite と sparkで説明されています。しかし、私はまだそれらの目的を理解していないことに気付きました。
つまり、点火するよりも点火する方が好ましい問題と、その逆の問題は何ですか?
現在、私は Apache spark と Apache ignite フレームワークを研究しています。
それらのいくつかの原則の違いは、この記事ignite と sparkで説明されています。しかし、私はまだそれらの目的を理解していないことに気付きました。
つまり、点火するよりも点火する方が好ましい問題と、その逆の問題は何ですか?
Spark は対話型分析に適した製品であり、Ignite はリアルタイム分析と高性能トランザクション処理に優れていると言えます。Ignite は、効率的でスケーラブルなメモリ内キー値ストレージと、インデックス作成、データのクエリ、および計算の実行のための豊富な機能を提供することで、これを実現します。
Ignite のもう 1 つの一般的な用途は分散キャッシュです。これは、リレーショナル データベースやその他のデータ ソースと対話するアプリケーションのパフォーマンスを向上させるためによく使用されます。
Apache Ignite は、大規模なデータ セットをリアルタイムで計算および処理するための、高性能で統合および分散されたインメモリ プラットフォームです。前例のない処理速度と大規模なアプリケーション スケーラビリティを実現します。
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 In-Memory File System (IGFS) は Spark ジョブとアプリケーション間で状態を共有することもできます
Apache Sparkは処理フレームワークです。データを取得する場所を指定し、そのデータを処理する方法に関するコードを提供してから、結果を配置する場所を指定します。これは、任意のソースからのデータ (処理中にメモリ内に保持される) に対して、クラスター内の多数のノードにわたってコンピューティング ロジックを簡単かつ確実に実行する方法です。これは主に、さまざまなソース (一度に複数のデータベースからでも)、または Kafka などのストリーミング ソースからのデータに対する大規模な分析を目的としています。また、最終結果を他のデータベース システムに入れる前にデータを変換して結合するなど、ETL にも使用できます。
Apache Igniteはインメモリ分散データベースに近いものであり、少なくともそのように開始されました。キー/値と SQL API があるため、さまざまな方法でデータを保存および読み取り、他の SQL データベースと同じようにクエリを実行できます。また、(Spark に似た) 独自のコードの実行もサポートしているため、SQL では実際には機能しない処理を実行しながら、同じシステム内でデータの読み取りと書き込みをすべて実行できます。また、途中でキャッシュ層として機能しながら、他のデータベース システムにデータを読み書きすることもできます。最終的に、2018 年にはオンディスク ストレージもサポートするようになり、オールインワンの分散データベース、キャッシュ、および処理フレームワークとして使用できるようになりました。
より複雑な分析には Apache Spark の方が優れており、Spark で Apache Ignite からデータを読み取ることができますが、多くのシナリオでは、Apache Ignite を使用して処理とストレージを 1 つのシステムに統合できるようになりました。