我正在尝试配置flume来监视hadoop任务日志目录,因此当新作业启动时,任务日志会流式传输到flume,并过滤一些事件日志并将其发送到某个地方(当作业仍在运行时)。
有可以使用的Flume源码吗?类似于 exec source tail,但是当 Flume 代理启动时,完整的文件路径是未知的。我认为这里不能使用 spool 目录,因为我需要在写入日志时对其进行扫描。
最佳答案
是的,实际上 spool 源就可以完成这项工作。这是一个示例配置:
SpoolAgent.sources = MySpooler
SpoolAgent.channels = MemChannel
SpoolAgent.sinks = HDFS
SpoolAgent.channels.MemChannel.type = memory
SpoolAgent.channels.MemChannel.capacity = 500
SpoolAgent.channels.MemChannel.transactionCapacity = 200
SpoolAgent.sources.MySpooler.channels = MemChannel
SpoolAgent.sources.MySpooler.type = spooldir
SpoolAgent.sources.MySpooler.spoolDir = /var/log/hadoop/
SpoolAgent.sources.MySpooler.fileHeader = true
SpoolAgent.sinks.HDFS.channel = MemChannel
SpoolAgent.sinks.HDFS.type = hdfs
SpoolAgent.sinks.HDFS.hdfs.path = hdfs://cluster/logs/%{file}
SpoolAgent.sinks.HDFS.hdfs.fileType = DataStream
SpoolAgent.sinks.HDFS.hdfs.writeFormat = Text
SpoolAgent.sinks.HDFS.hdfs.batchSize = 100
SpoolAgent.sinks.HDFS.hdfs.rollSize = 0
SpoolAgent.sinks.HDFS.hdfs.rollCount = 0
SpoolAgent.sinks.HDFS.hdfs.rollInterval = 3000
fileHeader prop 将设置一个带有文件名的 header ,该 header 在 HDFS-Sink 路径中引用。这会将事件路由到 HDFS 中的相应文件。
关于flume - 配置 Flume 以监视目录中的新日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27934975/