【问题标题】:Can Apache Storm spouts communicate with each other?Apache Storm spout 可以相互通信吗?
【发布时间】:2014-10-01 10:01:47
【问题描述】:

我有一个目录,另一个进程将文件放入其中。

我们当前的 Storm 实现读取此目录并选择最旧的文件并打开文件的阅读器。该读取器作为 spout 中的一个字段保存,因此当调用 nextTuple() 时,会从文件中输出一行。一旦 spout 完成读取,它就会关闭阅读器并打开一个新阅读器来读取新文件。

为了提高吞吐量,一个想法是让多个 spout 一次读取多个文件,因为这些 spout 将争夺同一目录中的相同文件,有没有办法在 spout 之间进行通信,以便它们可以协商哪些文件读书? (或者有一个将文件分配给 spout 的整体经理)。

目录和文件从 HDFS 存储和读取。

【问题讨论】:

  • 创建一个可以读取的锁文件来决定文件是否可以读取
  • 我有同样的问题和疑问。你最后是怎么解决这个问题的?

标签: java apache-storm


【解决方案1】:

我认为开箱即用没有办法让两个 spout 一起通信。 不过,你应该试试https://github.com/ptgoetz/storm-signals

有一个BaseSignalSpout,它依赖zookeeper在storm组件之间发送消息。

希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 2015-04-22
    • 2018-09-19
    • 2019-03-14
    • 2014-07-29
    相关资源
    最近更新 更多