我正在尝试使用Flume将访问日志发送到Spark群集。但是有一些限制迫使我编写自定义应用程序(或Flume源)来读取日志文件。
我正在尝试做的是让Flume客户端发出信号,以防它无法将数据写入接收器。由于我们经常有长时间的网络中断,并且没有足够的磁盘空间来将故障日志排入磁盘,直到网络备份为止。相反,我想“告诉”源停止读取日志,直到网络启动,然后“告诉”它再次启动。但到目前为止,我还没有看到任何关于文档中错误的回调。
无论如何,我可以在不重新发明轮子的情况下实现这样的场景吗?
答案 0 :(得分:0)
好的,现在我们已经澄清了几个问题,这里是实际发生的事情:
data-ng-switch-when="'India'"
Flume解析文件并将该文件的行转换为FlumeEvents,后者将被假脱机到Channel。这种情况尽可能快地发生,至少直到通道满了。如果频道已满,则源将退回,直到频道再次接受记录。您可以通过指定频道可以容纳的内存和记录数量来控制频道的容量。
AvroSink将读取该频道。如果AvroSink由于网络中断而无法提交事件,它将停止从频道消费,从而导致完整频道。
您将在那时看到Flume的日志文件中的消息,指示接收器无法跟上源,这是预期的行为,因为您的通道充当(不可靠)接收器的后备缓冲区。您将不会遇到重复的事件处理,但是如果选择非持久性通道类型(如MemoryChannel),则可能会将某些事件丢失到中断。