Apache Spark vs Apache Storm
リアルタイム データの増加により、リアルタイム データ ストリーミングの必要性は急激に高まっています。 ストリーミング技術がビッグデータの世界をリードする中、ユーザーにとって適切なリアルタイムストリーミングプラットフォームを選択するのは大変なことかもしれません。 6759>
フレームワーク Spark と Storm の主な違いは、Spark がデータ並列計算を実行するのに対し、Storm はタスク並列計算を行うことです
Apache Spark
Apache Spark は、汎用、照明高速、クラスタコンピューティング技術のフレームワークで、大規模データ処理の高速計算を行うために使用します。 6759>
Apache Storm
Apache Stormは、オープンソースのスケーラブルなフォールトトレラント、およびリアルタイムストリーム処理計算システムです。 ストリーム処理やイベント処理に特化した、リアルタイム分散データ処理のためのフレームワークです。 SparkとStormの違い
- Processing Model: Apache Sparkはバッチ処理を提供し、Stormはマイクロバッチ処理を提供する
- プログラミング言語: Apache SparkはJava, Scalaなどの少ない言語をサポートし、一方StormはScala, Java, Clojureなどの複数の言語をサポートします。 ApacheはHDFSを使用し、Apache Stormはspoutを使用しています。 メッセージング:Apache aparkはAkka、Nettyを使用し、Apache stormはZeroMQ、Netty
- Resource Management: Apache sparkはYarnとMeson、Apache stormはYarnとMesosが担当。 Apache Sparkと比較するとレイテンシーが高く、Apache Stormはより少ない制約でより良い低レイテンシーを提供します。
- Stream Primitives: Apache SparkはDStreamを使用し、Apache StormはTuple、Partitionを使用する
- 開発コスト。 Apache Sparkはバッチ処理とストリーム処理で同じコードを使用しますが、Apache Stormでは同じコードは使用できません。
- 永続性(Persistence)。 Apache SparkはRDD単位で使用するのに対し、Apache StormはMapStateを使用するため
- フォールトトレランス。 Apache sparkでは、YARN、Mesos、または独立したマネージャであるリソースマネージャを介してワーカーの再起動を処理し、Apache stormではプロセスが失敗した場合、状態管理がzookeeperを介して処理されるため、スーパーバイザプロセスが自動的にそれを再起動します
- Provisioning: Apache sparkはGangliaを使用した基本的な監視をサポートし、Apache stormはApache Ambari
- を使用してスループットを実現します。 Apache sparkは1ノードあたり100kレコード/秒を提供し、Apache stormは1ノードあたり10kレコード/秒を提供します。 Apache Sparkの状態の変更と維持はUpdateStateByKeyで更新できますが、状態の実装のために外部システムでプラグイン可能な戦略を適用することはできません。 一方、Stormでは、介在するボルトの出力を状態として保存するためのフレームワークは提供されていません。 したがって、各アプリケーションは必要なときにいつでも自分自身の状態を作成する必要があります
- Specialty: Apache Storm が分散 RPC を使用するのに対して、Apache Spark は統一処理(バッチ、SQL など)を使用します。