[英]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.