简单Flume实例——TAILDIR Source
采集方案架构图如下
1.目录结构
-myFirst #根目录
- test1 #日志目录
taildir-hdfs.conf #flume采集方案配置文件
2. 编写配置文件
在flume文件夹下创建一个myFirst的目录, 我们本次的所有文件都会放在该目录下执行
mkdir myFirst
然后在myFirst创建test1目录作为我们的日志存储目录(测试目录)以及tail-hdfs.conf采集方案配置文件
cd myFirst
mkdir test1
touch tail-hdfs.conf
采集方案文件内容如下
taildir-hdfs.conf
#1.定义各Agent组件的名称
a1.sources=r1
a1.channels=c1
a1.sinks=s1
#2.描述并配置source
a1.sources.r1.type=TAILDIR
a1.sources.r1.positionFile=/root/flume/myFirst/taildir_position.json
a1.sources.r1.filegroups=f1 f2
a1.sources.r1.filegroups.f1=/root/flume/myFirst/test1/example.log a1.sources.r1.fileHeader=true
#3.配置并描述channel
a1.channels.c1.type=memory
a1.channels.c1.capacity=100
a1.channels.c1.transactionCapacity=100
a1.channels.c1.keep-alive=10
a1.channels.c1.byteCapacity=0
#4.配置并描述sink
a1.sinks.s1.type=hdfs
a1.sinks.s1.hdfs.path=hdfs://hadoop01:9000/flume/myFirst/events1/%y-%m-%d/%H%M
#4.1. rollInterval、rollCount、rollSize 分别是每隔多少秒写一个文件、往文件中写入数据的最大次数、rollSize文件的大小。也就是达到任意一个条件hdfs上就会生成一个新文件,继续写入
a1.sinks.rollInterval=60
a1.sinks.rollCount=5
a1.sinks.rollSize=10240
a1.sinks.idleTimeout=60
a1.sinks.s1.hdfs.round=true
a1.sinks.s1.hdfs.roundValue=10
a1.sinks.s1.hdfs.roundUnit=minuite
a1.sinks.s1.hdfs.useLocalTimeStamp=true
#4.2.文件格式
a1.sinks.s1.hdfs.fileType=DataStream
#5.通过channel连接source和sink
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1
3.启动flume
在flume目录下执行如下命令
flume-ng agent --conf conf/ --conf-file myFirst/tail-hdfs.conf --name a1 -Dflume.root.logger=INFO,console
4.测试我们的示例
往test1/example.log写入一些内容
echo "1">>test1/example.log
echo "2">>test1/example.log
echo "3">>test1/example.log
5. 查看hdfs上收集的数据
echo "1">>test1/example.log
echo "2">>test1/example.log
echo "3">>test1/example.log