[英]Sent different tuples from 1 spout to different bolt in Apache Storm
[英]Apache Storm - Spout/Bolt crashing with high latency
在將Storm 1.1.0與我的拓撲一起使用時,我遇到了一個問題,即當拓撲具有高延遲的Bolt時,Storm重新計划或讓Bolts和Spouts崩潰。
現在,我創建了LatencyTest-Topology用於測試和解決此問題。
我有一個Spout,它發出隨機值:
public void nextTuple() {
outputCollector.emit(new Values(Math.random()));
}
我有一個Bolt,可以接收這些值並在特定時間睡眠。
public void execute(Tuple tuple) {
double input = tuple.getDouble(0);
try {
Thread.sleep(this.latencyMS);
} catch (InterruptedException e) {
e.printStackTrace();
}
outputCollector.ack(tuple);
}
因此,如果我將latencyMS設置為10,我可以看到,Storm在3分鍾內“正常”工作(在Bolt中僅2000個被確認的元組)。 然后,Bolts的延遲從60ms變為60-100ms,而不是10ms,Storm開始“重新分配”(登錄Nimbus)執行器。 然后,UI中的所有統計信息都將變為0。
由於我正在使用實際拓撲的Spout中的文件,因此重新打開這些文件是不可接受的。
我在storm.yaml和“ config.setMaxSpoutPending(200);”中處理了一些超時值。 選項,但似乎沒有任何效果。 我為此測試使用了3節點Zookeeper群集和5節點風暴群集。
您是否有解決此問題的想法? 即使延遲非常高,我也需要Storm繼續。
MaxSpoutPending不是超時配置,您應該配置的是topology.message.timeout
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.