2017-08-18 10 views
0

私のトポロジでStorm 1.1.0を使用しているときに、Stormが再スケジュールしたり、BoltとSpoutsをクラッシュさせたりします。Apache Storm - Spout/Boltクラッシュ(待ち時間が大きい)

ここでは、この問題をテストして再生するためのLatencyTest-Topologyを作成しました。

私は、ランダムな値を放出スパウト、持っている:

public void nextTuple() { 
    outputCollector.emit(new Values(Math.random())); 
} 

をそして私は、これらの値をrecievesし、特定の時間のために眠ってボルトを、持っています。

public void execute(Tuple tuple) { 
    double input = tuple.getDouble(0); 
    try { 
     Thread.sleep(this.latencyMS); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
    outputCollector.ack(tuple); 
} 

私は10にlatencyMSを設定した場合、私が見ることができるので、その嵐は「罰金」作品(ただ2000はボルトでタプルをACKさ)3分間。その後、ボルトの待ち時間は10msではなく60-100msになり、ストームはエグゼクティブを「再割り当て」(Nimbusにログイン)し始めます。そして、UI内のすべての統計は、私は私の本当のトポロジーのスパウト内のファイルで作業しておりますので、これらを再開することは受け入れられない0

Image 1: No Crash and 2000 Tuples acked with high latency

Image 2: Crashed an no information in the UI

しようとしています。

私はstorm.yamlと「config.setMaxSpoutPending(200);」でいくつかのタイムアウト値を使って遊んでいました。しかし、何も効果がないようです。 このテストでは、3ノードのZookeeper Clusterと5 Node Storm Clusterを使用しています。

解決方法や理解方法はありますか? 待ち時間が非常に長い場合でも、私は嵐が必要です。

答えて

0

MaxSpoutPendingはタイムアウト設定ではありません。設定する内容はtopology.message.timeoutです。

関連する問題