回答:
Apache Kafkaを、大量のデータを処理できる分散型の堅牢なキューとして使用し、メッセージをあるエンドポイントから別のエンドポイントに渡すことができます。
ストームはキューではありません。リアルタイム処理機能が分散されたシステムであり、リアルタイムデータに対してあらゆる種類の操作を並列で実行できます。
これらのツールの一般的なフロー(私の知っているとおり)は次のとおりです。
リアルタイムシステム->カフカ->ストーム-> NoSql-> BI(オプション)
したがって、大量のデータを処理するリアルタイムアプリがあり、それをKafkaキューに送信します。Stormはkafkaからデータをプルし、必要な操作を適用します。この時点では、通常、このデータからいくつかの利点を得たいので、追加のBI計算のためにいくつかのNosql dbに送信するか、他のシステムからこのNoSqlをクエリするだけです。
KafkaとStormの目的は少し異なります。
Kafkaは、1秒あたりの大量のメッセージを処理できる分散メッセージブローカーです。パブリッシュサブスクライブパラダイムを使用し、トピックとパーティションに依存しています。KafkaはZookeeperを使用してブローカー間で状態を共有および保存します。したがって、Kafkaは基本的に、あるマシンから別のマシンにメッセージを転送する責任があります。
ストームは、スケーラブルでフォールトトレラントなリアルタイム分析システムです(リアルタイムのHadoopのように考えてください)。ソース(スパウト)からデータを消費し、パイプライン(ボルト)に渡します。それらをトポロジで組み合わせることができます。したがって、ストームは基本的には計算ユニット(集約、機械学習)です。
しかし、それらを一緒に使用することもできます。たとえば、アプリケーションはkafkaを使用して他のサーバーにデータを送信し、ストームを使用して計算を行います。
これは古いスレッドであり、Apache KafkaとStormの比較は、記述された時点で有効かつ正確でしたが、バージョン0.10(2016年4月)以降、Apache Kafkaが大幅に進化していることは注目に値しますストームなどの追加のソフトウェアを必要とせずにストリーム処理機能を提供するKafka Streams API。Kafkaには、データのさまざまなソースおよびシンク(宛先)に接続するためのConnect APIも含まれています。
発表ブログ-https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/
現在のApacheドキュメント-https://kafka.apache.org/documentation/streams/
0.11 Kafkaでは、ストリーム処理機能がさらに拡張され、Exactly Once Semantics and Transactionsが提供されました。
https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/
Kafka-リアルタイムストリームを提供する
ストーム -そのストリームでいくつかの操作を実行するには
GitHubプロジェクトhttps://github.com/abhishekgoel137/kafka-nodejs-d3jsをご覧ください。
(D3jsはグラフ表現ライブラリです)
理想的なケース:
Realtime application -> Kafka -> Storm -> NoSQL -> d3js
このリポジトリは以下に基づいています:
Realtime application -> Kafka -> <plain Node.js> -> NoSQL -> d3js
誰もがApache Kafka:は継続的なメッセージングキューであることをあなたに説明するように
Apache Storm:は継続的な処理ツールです
この側面では、KafkaはAPIを使用してFB、Twitterなどの任意のWebサイトからデータを取得し、そのデータはApache Stormを使用して処理され、処理したデータを任意のデータベースに保存できます。
https://github.com/miguno/kafka-storm-starter
ちょうどそれに従ってくださいあなたはいくつかのアイデアを得るでしょう
イベントの処理を続けながら、パターンを視覚化または警告する(Twitterの傾向を考える)必要があるユースケースがある場合、いくつかのパターンがあります。
NiFiを使用すると、カスタムコーディングをほとんど行わずに、イベントを処理し、低(より)バッチ集約で永続データストアを更新できます。
ストーム(多くのカスタムコーディング)により、トレンドイベントにほぼリアルタイムでアクセスできます。
何秒も待つことができれば、kafkaからhdfs(Parquet)にバッチ処理して処理できます。
数秒で知る必要がある場合は、NiFiが必要です。おそらくStormも必要です。(竜巻警報のために私が小地域の気象条件を確認する必要がある何千もの地球ステーションを監視することを考えてください)。
単にKafkaがノードから別のノードにメッセージを送信し、Stormがメッセージを処理します。Apache KafkaとStormを統合する方法のこの例を確認してください