私はSpark(Berkeley)クラスタコンピューティングシステムに取り組んでいます。私の研究では、Redis、Memcachedbなどの他のメモリ内システムについて学びました。誰かが私にSPARKとREDIS(とMEMCACHEDB)の比較を与えることができれば素晴らしいと思います。スパークはこれらの他のインメモリシステムよりもどのようなシナリオで優位性がありますか?メモリ内クラスタコンピューティングシステムの比較
答えて
完全に異なる獣です。
Redisとmemcachedbは分散ストアです。 Redisは、さまざまなデータ構造を特徴とするオプションの永続性を備えた純粋なインメモリシステムです。 Memcachedbは、Berkeley-DB上にmemcached APIを提供します。いずれの場合も、OLTPアプリケーション、または単純なリアルタイム分析(オンザフライ・データ集約)のために使用される可能性が高くなります。
Redisとmemcachedbの両方に、格納されたデータを効率的に並列に反復するメカニズムがありません。保存されたデータを簡単にスキャンして処理することはできません。彼らはこれのために設計されていません。また、クライアント側のシャーディングを使用する以外は、クラスタ内でスケールアウトすることはできません(Redisクラスタの実装は進行中です)。
スパークは、メモリ内の分散データセットを提供することで、大規模な分析ジョブ(特に反復ジョブ)を迅速化するシステムです。 Sparkを使用すると、クラスタのマシン上で効率的な反復的なマップ/リダクションジョブを実装できます。
RedisとSparkはどちらもメモリ内のデータ管理に依存しています。しかし、Redis(とmemcached)は他のOLTP NoSQLストアと同じ球場でプレイしますが、SparkはHadoopのmap/reduceシステムに似ています。
Redisは、サブミリ秒の遅延で高スループットで多数の高速ストレージ/検索操作を実行するのに適しています。 Sparkは、大量のデータに対して機械学習、グラフ解析、対話型データマイニングなどの大規模反復アルゴリズムを実装することに輝きます。
更新:ストームに関する追加質問
質問が嵐にスパークを比較することである(下記のコメントを参照してください)。
スパークは、既存のデータボリュームが大きい場合、データをプロセスに移動するのではなく、データを移動する方が安価であるという考えに基づいています。各ノードはそのデータセットを格納(またはキャッシュ)し、ジョブはノードに送信されます。したがって、プロセスはデータに移動します。 I/Oを避けるためにメモリストレージが積極的に使用され、反復アルゴリズム(前のステップの出力が次のステップの入力である場合)を効率的にする点を除けば、Hadoop map/reduceと非常に似ています。 Sharkは、Sparkの上に構築されたクエリエンジンです(アドホック分析クエリをサポートしています)。
スパークの完全な構造的反対であるとStormを見ることができます。 Stormは分散ストリーミングエンジンです。各ノードは基本プロセスを実装し、データアイテムは相互接続されたノードのネットワークに出入りします(Sparkとは逆です)。 Stormを使用すると、データはプロセスに移行します。
両方のフレームワークは、大量のデータの計算を並列化するために使用されます。
しかし、Stormは、生成された/収集された多数の小さなデータ項目(Twitterストリーム上でリアルタイムでいくつかの集計関数や解析を計算するなど)を動的に処理するのに優れています。
Sparkは、Sparkクラスタにインポートされた既存のデータ(Hadoopなど)のコーパスに適用され、インメモリ管理による高速スキャン機能を提供し、反復アルゴリズムのI/Oのグローバルな数を最小限に抑えます。
- 1. メモリ使用量の比較
- 2. 客観的なメモリ比較
- 3. 比較タプル内容
- 4. リスト内のリストの比較
- 5. MongoDB内のドキュメントの比較
- 6. コントローラ内のテーブルの比較
- 7. アレイ内のオブジェクトプロパティの比較
- 8. ifステートメント内の比較?
- 9. データベーステーブル内容の比較
- 10. ペアワイズ比較:1つのリスト内のサブリストを比較する
- 11. ソリューション内のフォルダを無視して比較する比較
- 12. ウィザードのページ内で比較結果を比較する
- 13. ブラウザのセッション保存とメモリ内変数の保存との比較
- 14. ループ内のDateTimesの範囲の比較
- 15. Ifステートメント内の文字列の比較
- 16. データベース内のテーブルとデータの比較
- 17. コード内の「無効な型の比較」
- 18. テンプレート内の日付の比較Django
- 19. SQL - テーブル内の日付の比較
- 20. サブクエリ内の比較変数のMySQLサブクエリエラー
- 21. SQL内のデータの並列比較
- 22. Quickblox iOS - カスタムオブジェクトリクエスト内の日付の比較
- 23. リスト内の項目の比較
- 24. シーケンス内の隣接要素の比較
- 25. 同じタスクのシェルスクリプトとPythonスクリプトのメモリ使用量の比較
- 26. クエリー間の比較行の比較
- 27. データベーススキーマの比較 - SQLオブジェクトの比較
- 28. C++構造体とメモリのクラスの比較
- 29. PHPの2つのCSVファイルをメモリ不足で比較する
- 30. JSONオブジェクトのメモリ割り当てと変数の比較
ストームはどうですか?あなたはそれをスパーク(またはサメ)とどのように比較できますか? – void
私の更新を見てください... –
更新ありがとうございます。気にしないでもう1つの質問があります。 Sparkには、リアルタイム分析のためのツール「Spark Streaming」があります。 Storm(別のリアルタイム解析ツール)に匹敵しますか?それにはどんな利点がありますか? – void