2016-08-17 6 views
0

同じノードで実行されている別のボルトに1つのボルトのエミッションを伝播させるCustomGroupingを書きたいと思います。 localOrShuffleGroupingは、同じプロセス内でタプルを保持しようとすることによってこれを部分的に達成します。私はさらに一歩進んで、マシンレベルで縛りをつけたいと思っています。ここでの主な目的は、ネットワークの待ち時間を短縮し、スループットを向上させることです(帯域幅に制限されないため)。Apache Stormでノード上で実行中のタスクを特定する方法

TopologyContextからgetThisWorkerTasks()を呼び出すと、同じワーカープロセスで実行されているタスクIDを取得できることにご注意ください。しかし、私は同じノード(他のプロセスのものを含む)上で実行されているすべてのtaskIDを取得する方法を見つけることができませんでした。

答えて

0

私たちはこれを行うAPIがないと思います。これを行うための1つの方法は、ダウンストリームのボルトがホスト名(またはIP)とタスクIDをすべてのアップストリームボルト(グローバルストリーミングによって)に送信し、アップストリームボルトのこの情報を使用してタプルを送信するのに最適なボルトを決定することです。ホスト名を送信するには、tick tupleを使用できます。

+0

ありがとうRahim!私もこれについて考えていました。グローバルなグループ分けをする際にネットワークトラフィックが増加する可能性があると感じました。もちろん、結論を出す前にいくつかのベンチマークを実行しなければなりません。 – k008

+0

毎回ホスト情報を送信する必要はないと思います。最初は十分なので、ネットワークトラフィックには影響しません。 –

+0

それは?ですから、ワーカープロセスがエグゼキュータを起動してtaskIDを生成すると、それらは同じままになりますか?エグゼクティブが後で別のボルトで作業を開始した場合でも? – k008

関連する問題