当前位置: 首页 > 知识库问答 >
问题:

Storm喷口/拓扑性能

管杜吟
2023-03-14

我对Apache Storm的性能有一个问题,主要是从喷口出来的。

我有一个从kestrel队列发出项目的拓扑。我获取大约2000个项目,每次在喷注中调用NextTuple时,我都会发出一个。

我正在使用1个spout任务和1个spout执行器运行。我已将SetMaxSpoutPending设置为10。

为什么每次调用NextTuple之间有这么大的时间间隔?outputCollector在发出一个新元组之前是否正在等待听到每个元组的反馈?

我正在运行Java8和storm版本0.9.4

共有1个答案

姜育
2023-03-14

来自文档:https://storm.apache.org/apidocs/backtype/storm/spout/ispout.html

Storm在同一线程上执行ack、fail和nextTuple。这意味着ISpout的实现者不需要担心这些方法之间的并发问题。但是,这也意味着实现者必须确保nextTuple是非阻塞的:否则方法可能会阻塞待处理的ACK和失败。

提示1:调用nextTuple时发出1个元组。提示2:不要在nextTuple中获取数据,在一个单独的线程中进行,并使用任何并发队列来推送和轮询数据,这样nextTuple只会轮询。提示3:尝试将setMaxSpoutPending设置为1。提示4:确保每个bolt的execute(tuple)方法都是优化的。

 类似资料:
  • 我们有一个不想连续运行storm拓扑的用例。相反,有一组输入(10K+)应该在指定的时间被处理,Spout连续发射这些输入,并得到拓扑中其余螺栓的处理。处理完所有输入后,在我的喷注中就没有任何东西可以从nextTuple发出。 此时,我们希望拓扑进入Hibernate状态,并在每天晚上12:00重新启动进程。 在storm配置中是否有任何属性可以设置为每天运行一次拓扑并在处理完成后Hibernat

  • 我创建了一个带有Spout的Storm拓扑,该Spout会发出许多元组用于基准测试。一旦所有的元组都从spout发出或者拓扑中不再有任何元组流动,我就想停止/终止我的拓扑。

  • 我是Storm和Kafka的新手,我可以在一段时间后在本地虚拟机上安装它们。我目前有一个有效的wordCount拓扑,从dropBox文本文件中提取句子: 现在我想升级我的喷口,使用Kafka的文本,以便在拓扑结构中提交到我的下一个螺栓。我试图在git中遵循许多文章和代码,但没有任何成功。例如:这个Kafka喷口。谁能帮助我,给我一些方向,以便实现新的spout.java文件?谢谢你!

  • 我正在尝试使用Eclipse在Linux中运行Storm启动示例。我收到以下错误和函数从未被调用。 错误: 我的拓扑类: 我正在虚拟机环境中工作,所以不知道这是否是由于安装了Zookeeper。有什么想法吗?

  • 8台机器一直在使用。每一个都有22个核心和512 GB的RAM。但是,我们的代码运行得真的很慢。传输600万个数据需要10分钟才能完成。 60个文件中的10 MB在一秒钟内传输到HDFS。我们正在努力优化我们的代码,但很明显我们做了一些非常错误的事情。 对于蜂巢表,我们有64个桶。 在HDFS喷口;.setmaxextending(50000); 在蜂巢喷口选项;.WithTxNsperBatch

  • 如何为storm拓扑提供自定义配置?例如,如果我构建了一个连接到MySQL集群的拓扑,并且我希望能够更改需要连接到哪些服务器而不需要重新编译,我将如何做到这一点?我更喜欢使用配置文件,但我担心文件本身没有部署到集群中,因此它不会运行(除非我对集群工作方式的理解有缺陷)。到目前为止,我所看到的在运行时将配置选项传递到storm拓扑的唯一方法是通过命令行参数,但当您获得大量参数时,这将是混乱的。 有一