flume - 配置 Flume 以监视目录中的新日志

标签 flume

我正在尝试配置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/

相关文章:

hadoop - 使用 Flume 将文件从假脱机目录移动到 HDFS

hadoop - Flume 代理未在不同机器上连接

hadoop - Flume 和远程 HDFS 接收器错误

Flume -flume.root.logger=DEBUG,console 只记录 INFO 级别的日志语句

hadoop - FlumeData 文件未在 HDFS 接收器中创建

mysql - 使用flume将数据从mySQL复制到Hbase : how?

hadoop - 水槽配置

hadoop - 将zip文件从一台服务器移到hdfs?

hadoop - Flume HttpSource权限被拒绝

java - Flume 1.2.0 自定义源码