前面学习了Flume的source、channel和sink类型,接下来通过实例操作。
一、测试示例
1、通过flume来监控一个目录,当目录中有新文件时,将文件内容输出到控制台。
① 创建/root/flume/conf/spooldir.conf
#配置一个agent,agent的名称可以自定义(如a1)
#指定agent的sources(如s1)、sinks(如k1)、channels(如c1)
#分别指定agent的sources,sinks,channels的名称 名称可以自定义
a1.sources = s1
a1.sinks = k1
a1.channels = c1
#描述source
#配置目录scource
a1.sources.s1.type =spooldir
a1.sources.s1.spoolDir =/home/hadoop/logs
a1.sources.s1.fileHeader= true
a1.sources.s1.channels =c1
#配置sink
a1.sinks.k1.type = logger
a1.sinks.k1.channel = c1
#配置channel(内存做缓存)
a1.channels.c1.type = memory
② 启动命令
[hadoop@hadoop1 ~]$ flume-ng agent --conf /root/flume/conf --conf-file /root/flume/conf/spooldir.conf --name a1 -Dflume.root.logger=INFO,console
③ 将123.log移动到logs目录
④ 运行结果
2、通过flume来监控一个本地文件,当文件有新内容时,将文件内容输出到指定的本地文件。
① 创建/root/flume/conf/localfile.conf
#定义agent中各组件名称
agent1.sources=source1
agent1.sinks=sink1
agent1.channels=channel1
# source1组件的配置参数
agent1.sources.source1.type=exec
#此处的文件/home/source.log需要手动生成,见后续说明
agent1.sources.source1.command=tail -n +0 -F /root/source.log
# channel1的配置参数
agent1.channels.channel1.type=memory
agent1.channels.channel1.capacity=1000
agent1.channels.channel1.transactionCapactiy=100
# sink1的配置参数
agent1.sinks.sink1.type=file_roll
agent1.sinks.sink1.sink.directory=/tmp/A
# 将source和sink 绑定到channel
agent1.sources.source1.channels=channel1
agent1.sinks.sink1.channel=channel1
② 启动命令
[root@fishyoung ~]# flume-ng agent --conf /root/flume/conf --conf-file /root/flume/conf/localfile.conf --name agent1 -Dflume.root.logger=DEBUG,console
③ 往/root/source.log里面输入内容
④ 运行结果