如果接收器不可达,则发出信号Flume源停止

时间:2015-09-08 14:59:04

标签: logging apache-spark flume log-shipping

我正在尝试使用Flume将访问日志发送到Spark群集。但是有一些限制迫使我编写自定义应用程序(或Flume源)来读取日志文件。

我正在尝试做的是让Flume客户端发出信号,以防它无法将数据写入接收器。由于我们经常有长时间的网络中断,并且没有足够的磁盘空间来将故障日志排入磁盘,直到网络备份为止。相反,我想“告诉”源停止读取日志,直到网络启动,然后“告诉”它再次启动。但到目前为止,我还没有看到任何关于文档中错误的回调。

无论如何,我可以在不重新发明轮子的情况下实现这样的场景吗?

1 个答案:

答案 0 :(得分:0)

好的,现在我们已经澄清了几个问题,这里是实际发生的事情:

data-ng-switch-when="'India'"

Flume解析文件并将该文件的行转换为FlumeEvents,后者将被假脱机到Channel。这种情况尽可能快地发生,至少直到通道满了。如果频道已满,则源将退回,直到频道再次接受记录。您可以通过指定频道可以容纳的内存和记录数量来控制频道的容量。

AvroSink将读取该频道。如果AvroSink由于网络中断而无法提交事件,它将停止从频道消费,从而导致完整频道。

您将在那时看到Flume的日志文件中的消息,指示接收器无法跟上源,这是预期的行为,因为您的通道充当(不可靠)接收器的后备缓冲区。您将不会遇到重复的事件处理,但是如果选择非持久性通道类型(如MemoryChannel),则可能会将某些事件丢失到中断。