gpt4 book ai didi

java - Apache Storm - Spout/Bolt 因高延迟而崩溃

转载 作者:行者123 更新时间:2023-12-02 12:21:27 26 4
gpt4 key购买 nike

在我的拓扑中使用 Storm 1.1.0 时,我遇到了这样的问题:当拓扑具有高延迟的 Bolt 时,Storm 会重新调度或让 Bolt 和 Spouts 崩溃。

现在我创建了一个 LatencyTest-Topology 来测试和解决这个问题。

我有一个 Spout,它发出随机值:

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

我有一个 Bolt,它接收这些值并 hibernate 特定时间。

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 可以“正常”工作(Bolt 中只有 2000 个已确认的元组)3 分钟。然后 Bolts 延迟从 10 毫秒上升到 60-100 毫秒,Storm 开始“重新分配”(登录 Nimbus)执行器。然后 UI 中的所有统计数据都将变为 0。

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

Image 2: Crashed an no information in the UI

由于我正在处理真实拓扑 Spout 中的文件,因此重新打开这些文件是 Not Acceptable 。

我在storm.yaml中尝试了一些超时值以及“config.setMaxSpoutPending(200);”选项,但似乎没有任何效果。我使用 3 节点 Zookeeper 集群和 5 节点 Storm 集群进行此测试。

您对如何解决或理解这个问题有什么想法吗?我需要 Storm 继续运行,即使延迟非常高。

最佳答案

MaxSpoutPending不是超时配置,你应该配置的是topology.message.timeout

关于java - Apache Storm - Spout/Bolt 因高延迟而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45754144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com