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