Flume数据采集
前置条件:完成zookeeper、Kafka、Flume以及Hadoop的安装和基本学习。
1 Flume配置概述
用日志文件使用一个脚本来生成存放在集群某一个节点,由于Flume是一个单点操作,故需要在该节点配置日志采集Flume。且采集到的日志进行JSON格式校验,然后将通过校验的JSON日志发送到kafka。
- Flume怎么校验?
- Source的类型选择?
选择TailDirSource的原因,可以实现断点续传,**多目录多文件实时
**监控? - Channel的类型选择?
选择kafkaChannel,省去了Sink,,提高了效率。kafka可以均衡速率,kafkachannel直接到kafka,不用sink。(sink的目的也是均衡速率)
2 Flume实际配置
#定义组件
a1.sources = r1
a1.channels = c1
#配置source
# source类型
a1.sources.r1.type = TAILDIR
# 定义一个文件组名称
a1.sources.r1.filegroups = f1
# 需要监控的文件的正则
a1.sources.r1.filegroups.f1 = /opt/module/applog/log/app.*
a1.sources.r1.positionFile = /opt/module/flume/taildir_position.json
#配置channel
# channel的类型
a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel
a1.channels.c1.kafka.bootstrap.servers = hadoop102:9092,hadoop103:9092
a1.channels.c1.kafka.topic = topic_log
a1.channels.c1.parseAsFlumeEvent = false
#组装
a1.sources.r1.channels = c1
3 Flume日志采集测试
(1)启动Zookeeper,kafka服务
(2)启动日志文件所在机器上的日志采集Flume
bin/flume-ng agent -n a1 -c conf/ -f job/file_to_kafka.conf
(3)启动一个Kafka的Console-Consumer
bin/kafka-console-consumer.sh --booststrap-server hadoop102:9092 --topic topic_log
(4)开启生成数据脚本,即可采集。
(5)观察kafka是否存在数据。