問題タブ [apache-storm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
2901 参照

apache-storm - 嵐をうまく使う?

私はStormについて読んで、storm-starter の例をいじっています。

コンセプトは理解できたと思いますし、多くの場合にうまく当てはまります。これについてもっと知りたいと思っているテスト プロジェクトがありますが、Storm が本当にこれに適しているかどうか疑問に思っています。

私が抱えている概念的な問題は、「ストリーミング」の定義にあります。Storms は、ストリームをサブスクライブしてリアルタイムで処理するチャームとして機能するようですが、実際にはストリームを持っているわけではなく、処理したいデータの有限のコレクションを持っています。

これには Hadoop があることは知っていますが、Storm のリアルタイム機能や、Storm を書いた Nathan が講演で言及しているその他の興味深い点に興味があります。

だから、ストリームをエミュレートするために、非ストリーミング API をポーリングし、結果を比較するスパウトを作成する人がいるのだろうか?

2 番目の重要な点は、Storm トポロジは中断されるまで処理を終了しないように見えることです。これは、私の場合には当てはまりません。ソース データの有限リストが終了したら、処理を終了して最終結果を出力できることをトポロジに知らせたいと思います。

それで、それはすべてストームの用語で意味がありますか、それとも私は間違ったことを見ていますか? もしそうなら、この種のリアルタイム並列コンピューティングのニーズに対して、どのような代替案を提案しますか?

ありがとう!

0 投票する
1 に答える
759 参照

web-crawler - PHPを使用したStormでのノンブロッキングHTTP呼び出し

Storm (IDE ではなくリアルタイム フレームワーク) を使用して webcrawler を構築することを評価しています。私のスパウトは URI のストリームを配信します。このストリームは、PHP で記述された最初の Bolt で呼び出して取得する必要があります。

node.js のバックグラウンドを持つ私は、コールバックを使用して、そのような機能を非ブロッキングの方法で構築できることを知っています。私の素朴な考えは、そのボルトに多くのタスクを構成するだけで、一部のタスクが応答を待っている間、リソースを完全に使用できるようにすることです。問題は、php が各プロセスに多くのリソースを割り当てることで悪名高いことです。Storm がそれを内部でどのように管理しているか、これが良いアイデアかどうかはわかりません。

この環境で node.js のような動作は可能ですか? それとも、この Bolt でそれを実現するために別の言語に切り替える必要がありますか (そうであれば、どうすればよいですか)?

0 投票する
2 に答える
1104 参照

distributed-computing - Storm でフォールト トレラントなアプリを構築するにはどうすればよいですか?

質問の短いバージョン:障害が発生した場合でも正確な結果を生成するフェイルセーフな単語カウント プログラム (トポロジ) を Twitter Storm で構築する方法は? それは可能ですか?

長いバージョン: 私は Twitter Storm を研究しており、それがどのように使用されるべきかを理解しようとしています。チュートリアルに従ったところ、非常に単純な概念であることがわかりました。ただし、チュートリアルで概説されているワード カウントの例はフォールト トレラントではありません (ボルトは一部のデータをメモリに保存するため)。ただし、バックエンド DB に同じデータを保存すると、イベントがチェーンの最初に再送信された場合 (ボルトの一部が失敗した場合に発生)、二重カウントにつながります。

Twitter Storm を部分的に正確な結果を生成するためのリアルタイム プラットフォームと見なし、正確な結果を取得するために MapReduce に依存する必要がありますか?

0 投票する
6 に答える
23235 参照

hadoop - Apache Storm と Hadoop の比較

Storm は Hadoop と比べてどうですか? Hadoop はオープンソースの大規模バッチ処理のデファクト スタンダードのようですが、Storm には Hadoop よりも優れた点がありますか? またはそれらは完全に異なりますか?

0 投票する
2 に答える
3331 参照

java - BlockingQueue java 、Storm (分散コンピューティング) の実装に問題がありますか?

これは、クラスターを介したストリーム処理のためにノード化された処理にタプルを発行するための入力スパウトのコード スニペットです。問題は、 BlockingQueue が InterruptedException をスローしていることです。

例外の説明は次のとおりです:---

java.lang.InterruptedException10930 [Thread-20] INFO backtype.storm.util - 非同期ループが中断されました!

そして nextTuple(InputStreamSpout.java:65 は ------>

ありがとう

0 投票する
2 に答える
1972 参照

redis - リアルタイム分析処理システムの設計

多数のユーザートランザクションを分析し、集約された測定値(傾向など)を生成するシステムを設計しています。システムは高速に動作し、堅牢でスケーラブルである必要があります。システムはJavaベースです(Linux上)。

データは、ユーザートランザクションのログファイル(CSVベース)を生成するシステムから到着します。システムは毎分ファイルを生成し、各ファイルにはさまざまなユーザーのトランザクション(時間でソート)が含まれ、各ファイルには数千人のユーザーが含まれる場合があります。

CSVファイルのサンプルデータ構造:

10:30:01、ユーザー1、...
10:30:01、ユーザー1、...
10:30:02、ユーザー78、...
10:30:02、ユーザー2、...
10: 30:03、ユーザー1、...
10:30:04、ユーザー2、
...。。。

私が計画しているシステムは、ファイルを処理し、リアルタイムで分析を実行する必要があります。入力を収集し、それをいくつかのアルゴリズムや他のシステムに送信し、計算結果をデータベースに保存する必要があります。データベースは実際の入力レコードを保持しませんが、トランザクションに関する高レベルの集約分析のみを保持します。たとえば、トレンドなど。

私が使用することを計画している最初のアルゴリズムは、最良の操作のために少なくとも10ユーザーレコードを必要とします。5分後に10レコードが見つからない場合は、利用可能なデータを使用する必要があります。

実装にはStormを使用したいのですが、この議論は可能な限り設計レベルに残したいと思います。

システムコンポーネントのリスト:

  1. 着信ファイルを毎分監視するタスク。

  2. ファイルを読み取り、解析して、他のシステムコンポーネントやアルゴリズムで使用できるようにするタスク。

  3. ユーザーのために10レコードをバッファリングするコンポーネント(5分以内)。10レコードが収集されたとき、または5分が経過したとき、さらに処理するためにデータをアルゴリズムに送信します。アルゴリズムに少なくとも10個のレコードを提供する必要があるため、ストームフィールドグループ化(同じタスクが同じユーザーに対して呼び出されることを意味します)を使用して、タスク内の10個のユーザーのレコードのコレクションを追跡することを考えました。もちろん計画していますこれらのタスクのいくつかを持つために、それぞれがユーザーの一部を処理します。

  4. 単一のトランザクションで機能する他のコンポーネントがあります。それらについては、(他のタスクと並行して)解析されるときに各トランザクションを受け取る他のタスクを作成することを計画しています。

#3であなたの助けが必要です。

そのようなコンポーネントを設計するためのベストプラクティスは何ですか?ユーザーごとに10レコードのデータを維持する必要があることは明らかです。キーバリューマップが役立つ場合があります。マップをタスク自体で管理するか、分散キャッシュを使用する方がよいでしょうか。たとえば、RedisはKey Value Storeです(これまで使用したことはありません)。

ご協力いただきありがとうございます

0 投票する
1 に答える
744 参照

networking - 小さな4ノードクラスターの構築-ネットワーキングに関するいくつかの簡単な質問

ストームを実行する小さな4ノードクラスターをまとめています。ネットワーキングの側面についていくつか質問があります。まず、すべてのコンピューターにギガビットイーサネットが装備されていますが、私が現在持っているハブは100メガビットまでしかありません。ハブをアップグレードする必要がありますか?それとも、パフォーマンスの向上はごくわずかですか?次に、いくつかのサイトで、ハブは使用するのに最適なハードウェアではなく、スイッチの方が自分の目的に適していることを読みました。Stormを使用して、1台のマシンでインターネットからデータを取得し、それを他のマシンに渡して処理しようとしています。スイッチまたはハブの方が便利ですか?すべてのあなたの助けの人々に感謝します。

0 投票する
1 に答える
800 参照

python - Python storm/web.py: MySQL データベースで DisconnectionError を正しく処理する

MySQL データベースからレコードをクエリするための ORM レイヤーとして嵐を使用して、web.py に基づく Web サービスを作成しています。Web サービスは、Linux ボックスで Apache2 を使用して mod_wsgi 経由でデプロイされます。create_database()ストームの方法を使用してスクリプトを開始すると、MySQL データベース サーバーへの接続が作成されます。Storeこれは、後でリクエストが入ったときにクエリを実行するために使用されるオブジェクトを作成するポイントでもあります。

非アクティブ状態が数時間続くとstore.find()DisconnectionError: (2006, 'MySQL server has gone away'). Apache/mod_wsgi が Python プロセスを長時間再初期化せずに再利用するため、データベース接続が切断されることに驚きはありません。私の質問は、これを正しく処理する方法ですか?

「SELECT 1」を繰り返し (300 秒ごとに) 送信することで、MySQL サーバーへの接続を維持するメカニズムをセットアップしようとしました。残念ながら、テスト マシンの問題は修正されましたが、デモ展開 (痛い) では解決されませんでしたが、どちらも同じ MySQL 構成を共有しています (wait_timeoutは 8 時間に設定されています)。

ストーム ストアをデータベースに再接続するための解決策を探しましたが、洗練されたものは見つかりませんでした。唯一の推奨事項は、例外をキャッチし、それを矛盾として扱いrollback()、ストアを呼び出してから再試行する必要があるようです。Storeただし、これは、クラス全体をラップするか、同じ再試行メカニズムを何度も実装する必要があることを意味します。より良い解決策はありますか、それともここで何か完全に間違っていますか?

更新:例外がキャッチされた場合にストーム ストアを再作成し、Andrey が推奨するように操作を再試行することで、切断エラーを適切に処理する web.py プロセッサを追加しました。ただし、これは不完全で次善の解決策です。(a) ストアは再利用のために少数のオブジェクトによって参照され、これらのオブジェクトのそれぞれでストア参照を再配線する追加のメカニズムが必要であり、(b)、データベースで書き込みを実行するときのトランザクション処理 (ロールバック) は対象外です。ただし、少なくとも現時点では、ストアでのすべての読み取り操作に対して許容できる修正です。

0 投票する
1 に答える
727 参照

zeromq - Avro RPC/Storm統合

AvroRPCサーバーにデータを送信する既存のAvroRPCクライアントがあります。Avro RPCサーバーは現在、データをHDFSに書き込みます(他のことも行います)。サーバープロセスをStormに基づくように変更しています。できれば現在のAvroRPCメッセージを使用して、データをStormに取り込む簡単な方法を見つけたいと思っています。

私はこれを行う方法を探していましたが、これまでのところ成功していません。StormにはRPCモデルがありますが、文字列の受け渡しに限定されているようです。これは避けたいと思います(そもそもなぜAvroに行ったのか)。Zeromqは可能性があるかもしれませんが、私がやろうとしていることには限界があるようです。

スキーマベースのデータであるAvroRPCをStormに取り込むためのエレガントな方法を誰かが提案できますか?

ありがとう!!!!

0 投票する
2 に答える
1213 参照

java - ストーム mongo ライブラリを maven の依存関係として追加するにはどうすればよいですか?

storm-contribの SimpleMongoBolt を使用しようとしています。ソースをダウンロードし、storm-contrib-mongo ディレクトリに入り、mvn package と mvn install を実行しました。すべてが正常に機能し、IntelliJ はコーディング中に問題を解決できました。ただし、プロジェクトをビルドしようとすると、外部リポジトリでこのライブラリの pom を見つけようとします。見つからない場合は失敗します。これを修正するにはどうすればよいですか?