一、Flume环境配置
Flume下载地址:http://archive.apache.org/dist/flume/
下载后解压:
![42f23466fa2159e933da93da0dd430a7.png](https://i-blog.csdnimg.cn/blog_migrate/aa29f64cadc0e7738a2933656afc2ce8.jpeg)
1、进入conf 目录,windows环境下修改flume-env.ps1.template为flume-env.ps1
2、环境变量配置
FLUME_HOME:C:softwareapache-flume-1.7.0-bin
在path变量中添加 %FLUME_HOME%conf;%FLUME_HOME%bin;
3、判断是否安装成功
在cmd中输入flume-ng version
![05a9755924ecce32b4b650dd28735ade.png](https://i-blog.csdnimg.cn/blog_migrate/1021d1009c58e043a9c777334d67e9c5.jpeg)
4、conf目录下创建 nc_logger.conf
# 定义这个 agent 中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# 描述和配置 source 组件:r1
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 9000
# 描述和配置 sink 组件:k1
a1.sinks.k1.type = logger
# 描述和配置channel组件,此处使用是内存缓存的方式
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# 描述和配置 source channel sink 之间的连接关系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
启动
cd C:softwareapache-flume-1.7.0-binbin
flume-ng.cmd agent -conf ../conf -conf-file ../conf/nc_logger.conf -name a1 -property flume.root.logger=INFO,console
二、Flume + Kafka 整合
![617557c249d10023ffcf4cb0c1788d55.png](https://i-blog.csdnimg.cn/blog_migrate/93b8481e64d10e0e4ea6f5dc2c0d80bd.jpeg)
1、两个 Flume Agent 分别部署在两台 Web 服务器上,采集两台服务器的业务日志,监听 /home/logs/access.log 文件中的数据变化,并且将数据 Sink 到 flumeagent03 的 9000 端口。
vim log_kafka.conf 代码如下:
# 定义这个 agent 中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# source的配置,监听日志文件中的新增数据
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /home/logs/access.log
#sink配置,使用avro日志做数据的消费
a1.sinks.k1.type = avro
a1.sinks.k1.hostname = flumeagent03
a1.sinks.k1.port = 9000
#channel配置,使用文件做数据的临时缓存
a1.channels.c1.type = file
a1.channels.c1.checkpointDir = /home/temp/flume/checkpoint
a1.channels.c1.dataDirs = /home/temp/flume/data
#描述和配置 source channel sink 之间的连接关系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c
2、第三个 Flume Agent 用来接收上述两个 Agent 的数据,并且发送到 Kafka。我们需要启动本地 Kafka,并且创建一个名为 log_kafka 的 Topic。
vim flume_kafka.conf 代码如下:
# 定义这个 agent 中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1
#source配置
a1.sources.r1.type = avro
a1.sources.r1.bind = 0.0.0.0
a1.sources.r1.port = 9000
#sink配置
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.topic = log_kafka
a1.sinks.k1.brokerList = 127.0.0.1:9092
a1.sinks.k1.requiredAcks = 1
a1.sinks.k1.batchSize = 20
#channel配置
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
#描述和配置 source channel sink 之间的连接关系
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
当 Flume Agent 1 和 2 中监听到新的日志数据后,数据就会被 Sink 到 Kafka 指定的 Topic,我们就可以消费 Kafka 中的数据了。