在写入日志文件时,将其接收到hdfs中的最佳方法是什么?我正在尝试配置apacheflume,并尝试配置可以为我提供数据可靠性的源代码。我曾试图配置“exec”,后来还查看了“spooldir”,但flume.apache.org上的以下文档对我的意图提出了疑问-
执行源:
最常请求的特性之一是“tail-f file\u name”这样的用例,其中应用程序写入磁盘上的日志文件,flume跟踪该文件,将每一行作为事件发送。虽然这是可能的,但有一个明显的问题;如果频道已满,而flume无法发送事件,会发生什么情况?flume无法向编写日志文件的应用程序指示它需要保留日志,或者由于某种原因没有发送事件。当使用诸如execsource这样的单向异步接口时,应用程序永远不能保证已经收到数据!
后台处理目录源:
与exec源不同,“spooldir”源是可靠的,即使flume重新启动或终止,也不会丢失数据。作为这种可靠性的交换,只有不可变的文件必须被放到假脱机目录中。如果一个文件在放入假脱机目录后被写入,flume将在其日志文件中打印一个错误并停止处理。
有什么更好的,我可以使用,以确保Flume不会错过任何事件,也在实时阅读?
1条答案
按热度按时间n7taea2i1#
我建议使用假脱机目录源代码,因为它很可靠。inmmutability需求的一个解决方法是将文件组合到第二个目录中,一旦它们达到一定的大小(以字节或日志量为单位),就将它们移动到假脱机目录中。