我有一个目录,另一个进程将文件放入。
我们当前的Storm实现读取此目录并选择最旧的文件并打开该文件的阅读器。此读取器作为spout中的字段保存,因此当调用nextTuple()时,将从文件输出一行。一旦喷口完成读取,它将关闭阅读器并打开一个新的阅读器到新文件。
为了提高吞吐量,一个想法是让多个spout同时读取多个文件,因为这些spout将在同一目录中的相同文件上进行争夺,是否有一种方法可以在spouts之间进行通信,以便他们可以协商哪些文件阅读? (或者有一个总经理将文件分配给鲸鱼喷水)。
存储目录和文件并从HDFS读取。
答案 0 :(得分:3)
我认为开箱即用,没有办法让两个喷嘴一起沟通。 但是,您应该尝试https://github.com/ptgoetz/storm-signals
有一个BaseSignalSpout依赖于zookeeper在风暴组件之间发送消息。
希望这有帮助!