问题标签 [storm-topology]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
239 浏览

apache-storm - Apache Storm 2.1.0 内存相关配置

我们正在从 1.1.x 迁移到 2.1.0。

在我们当前的设置中,storm.yaml 中有以下内存配置

我在https://github.com/apache/storm/blob/master/conf/defaults.yaml中看到了许多其他与内存相关的配置,并且对它们有以下问题。

  1. worker.childoptstopology.worker.childopts有什么区别?如果我们在storm.yaml 中设置worker.childopts,我们还需要覆盖topology.worker.childopts吗?
  2. 如果我们在storm.yaml中设置worker.childopts,我们还需要覆盖worker.heap.memory.mb吗?这两个配置之间有关系吗?
  3. 应该topology.component.resources.onheap.memory.mb < worker.childopts吗?我们应该如何确定topology.component.resources.onheap.memory.mb的值?

感谢有人能解释这些观点。

0 投票
1 回答
52 浏览

apache-storm - 什么时候在 Apache Storm 中调用 spout 中的 'ack' 方法?

我有一个用两个螺栓处理文档的拓扑。在文档完全处理/通过整个拓扑结构后,我需要能够修改存储在 spout 中的数据结构。在进一步了解 Apache Storm 之前,我相信在 spout 中实现的 'ack' 方法仅在拓扑结束时调用。我现在看到需要在每个螺栓中调用“ack”并且感到困惑。

本质上,如果我将自定义代码放在 spout 的“ack”方法中:什么时候执行?每次在螺栓中调用“ack”方法时,或者当整个元组树被确认/每个喷口发出的每个元组一次?

0 投票
1 回答
167 浏览

apache-storm - Apache Strom 从 1.0.3 升级到 2.2.0 并没有使用所有的 worker

我正在从 Apache Storm 1.0.3 升级到 2.2.0 并面临一个特殊的问题,即拓扑任务并未在所有工作人员上运行,并且仅在与 Spout 相同的工作人员上运行。

我正在使用 shuffleGrouping 并在 2 个螺栓和 1 个喷口中配置了 6 个工作人员和总共 51 个执行程序。当我启动拓扑时,所有 6 个工作人员都按预期启动,但只有一个带喷口的工作人员正在完成所有工作。

我需要 2.2.0 的任何特殊配置吗,我的所有拓扑都可以在 1.0.3 版本中正常工作

作为一项测试,我也在运行 Strom-starter 的 ExclamationTopology,但看到相同的问题是只有一名工人在做所有的工作。

提前感谢您的帮助。

问候,

0 投票
0 回答
52 浏览

apache-kafka - Apache Storm Spout 没有向 Bolt 的所有执行者发出元组

Storm v1.2.2 我有一个有 6 个节点集群的环境,每个集群有 16 个核心。我已经部署了一个示例拓扑,它从具有 12 个分区的 kafka 主题中读取消息。

配置

我尝试向该 kafka 主题发布 20 条消息,因为最大 spout 挂起是 15,所以只有 15 条消息应该从 spout 获取并发出,但我发现只有 7 条消息被发送到 Bolt-A。在这 7 条消息被发送到 Bolt-B 之后,Bolt-A 从 spout 收到剩余的消息。

所以理想情况下,bolt-A 应该从 spout 获得 15 条消息,一旦这 15 条被确认,那么剩下的 5 条消息应该已经被拾取。但是我看到只收到了 7 条消息,并且我可以看到 8 个执行程序处于闲置状态,无所事事,是否我在风暴配置中遗漏了什么?我尝试使用 localOrSuffled 和 Suffled 分组,但很少有执行者总是空闲。有什么建议可以将工作平均分配给所有可用的执行者吗?

0 投票
0 回答
31 浏览

apache-storm - Apache Storm 元组在 10 分钟后超时,但 topology.message.timeout.secs 配置为 5 分钟

我们有一个 topology.message.timeout.secs = 300 秒的拓扑。最近,我们遇到了一个问题,即 spout 后的第一个 bolt 的容量达到了 ~2。bolt 开始处理元组的速度非常慢(它在 spout 发出元组 5 分钟后开始处理元组)。几分钟后,spout 发出元组,但在 bolt 开始处理之前,元组超时。

奇怪的是元组失败与发出之间的时间差是 10 分钟。

预期元组应该在 5 分钟后失败(配置为 300 秒)。

关于为什么没有真正考虑配置超时的任何想法/信息都会非常有帮助。是否有任何其他配置会影响元组超时?