Source:某个目录下所有文件
Channel:Kafka
Sink:Kafka
【Source和Channel的选择】 1)TailDirSource TailDirSource相比ExecSource、SpoolingDirectorySource的优势。 TailDirSource:断点续传、多目录。Flume1.6以前需要自己自定义Source记录每次读取文件位置,实现断点续传。 ExecSource可以实时搜集数据,但是在Flume不运行或者Shell命令出错的情况下,数据将会丢失。 SpoolingDirectorySource监控目录,支持断点续传。 2)KafkaChannel 采用Kafka Channel,省去了Sink,提高了效率。
vim /opt/module/flume/job/file_to_kafka.conf
#定义组件
a1.sources = r1
a1.channels = c1
#配置source
a1.sources.r1.type = TAILDIR # 选他,可以实现断点续传,但是注意,注释在flume里不能跟在这后面
a1.sources.r1.filegroups = f1
a1.sources.r1.filegroups.f1 = /opt/module/applog/log/app.* #监控log文件夹下所有以app开头的文件,但是注意,注释在flume里不能跟在这后面
a1.sources.r1.positionFile = /opt/module/flume/job/taildir_position.json #这个文件如果提前不存在是可以的,但是注意,注释在flume里不能跟在这后面
#配置channel
a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c1.kafka.bootstrap.servers = hadoop102:9092,hadoop103:9092,hadoop104:9092
a1.channels.c1.kafka.topic = topic_log
a1.channels.c1.parseAsFlumeEvent = false
#组装
a1.sources.r1.channels = c1