flume实时采集全量或者增量文件或者文件夹数据到kafka

flume实时采集全量或者增量文件或者文件夹数据到kafka
这里安装的Flume单节点,Kafka单节点,目标是通过Flume去读取文件中的历史数据导入到kafka中,还有就是将实时更新的数据传输到kafka中。
一、Flume安装
Flume的安装使用可以说非常简单,直接进官网:http://flume.apache.org/
在这里插入图片描述
最新是1.9.0版本,我们选择1.8.0版本下载。
在这里插入图片描述
在这里插入图片描述
配置flume的环境变量:略
二、kafka安装
kafka官网:http://kafka.apache.org/downloads
我下载的是kafka_2.11-2.4.0

在这里插入图片描述
在这里插入图片描述
启动服务器,配置好jdk和kafka就可以启动了,启动之前要先启动zookeeper服务器,zookeeper是为kafka提高协调服务的工具。kafka已经内置了一个zookeeper服务器以及一些启动脚本。
后台启动:

nohup ./zookeeper-server-start.sh  ../config/zookeeper.properties  &

启动好zookeeper以后,然后启动kafka服务器。

nohup bin/kafka-server-start.sh  config/server.properties  &

此时kafka的配置也完成。
三、flume实时采集数据到kafka中
创建topic

./kafka-topics.sh --zookeeper localhost:2181  --create --topic pms --partitions 1 --replication-factor 1
topic生产者
./kafka-console-producer.sh  --topic pms  --broker-list cdh01:9092
Topic消费者
./kafka-console-consumer.sh --bootstrap-server cdh01:9092 --topic pms

在conf下创建kakfa-producer.conf文件
此为读取原先日志的数据,并且读取新增的数据到kafka。

pro.sources = s1
pro.channels = c1
pro.sinks = k1

pro.sources.s1.type = exec
pro.sources.s1.command = tail -F  -c +0 /opt/standalone/pms3321.log

pro.channels.c1.type = memory
pro.channels.c1.capacity = 1000
pro.channels.c1.transactionCapacity = 100

pro.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
pro.sinks.k1.kafka.topic = pms
pro.sinks.k1.kafka.bootstrap.servers  = cdh01:9092
pro.sinks.k1.kafka.flumeBatchSize = 20
pro.sinks.k1.kafka.producer.acks = 1
pro.sinks.k1.kafka.producer.linger.ms = 1
pro.sinks.k1.kafka.producer.compression.type = snappy

pro.sources.s1.channels = c1
pro.sinks.k1.channel = c1

启动flume:

nohup flume-ng agent -n pro -c ./ -f kafka-producer.conf &

在这里插入图片描述
此为不读取原先日志的数据,只读取新增的数据

pro.sources = s1
pro.channels = c1
pro.sinks = k1

pro.sources.s1.type = exec
pro.sources.s1.command = tail -F   /opt/standalone/pms3321.log

pro.channels.c1.type = memory
pro.channels.c1.capacity = 1000
pro.channels.c1.transactionCapacity = 100

pro.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
pro.sinks.k1.kafka.topic = pms
pro.sinks.k1.kafka.bootstrap.servers  = cdh01:9092
pro.sinks.k1.kafka.flumeBatchSize = 20
pro.sinks.k1.kafka.producer.acks = 1
pro.sinks.k1.kafka.producer.linger.ms = 1
pro.sinks.k1.kafka.producer.compression.type = snappy

pro.sources.s1.channels = c1
pro.sinks.k1.channel = c1

启动flume:

nohup flume-ng agent -n pro -c ./ -f kafka-producer.conf &

四、flume的Taildir监控多个文件夹并且将历史数据和新增数据添加到指定的文件夹中的一个文件
一言不合直接上配置文件
配置文件中:
a1.sources.r1.positionFile:记录着文件的偏移量
本人亲测:如果直接执行的话,会将所有的数据都存在一个输出数据文件中,并且随着数据的增多,会实时更新到数据文件中,并且记录文件的偏移量,假设将输出数据文件删除在重新启动配置文件,则会重新生成数据文件并且按照上次的偏移量记录。

a1.sources = r1
a1.channels = c1
a1.sinks = k1

a1.sources.r1.type = TAILDIR
#偏移量文件
a1.sources.r1.positionFile = /opt/standalone/apache-flume-1.8.0-bin/conf/taildir_position.json
#文件的组,可以定义多种
a1.sources.r1.filegroups = f1 f2
#第一组监控的是test1文件夹中的什么文件:.log文件
a1.sources.r1.filegroups.f1 = /home/javadev/f1/F1_Service/f1-microservice/f1_mlgj/logs/.*log
#第二组监控的是test2文件夹中的什么文件:以.log结尾的文件
a1.sources.r1.filegroups.f2 = /home/javadev/f1/F1_Service/f1-microservice/f1_rzgz/logs/.*log

a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

a1.sinks.k1.type=file_roll
a1.sinks.k1.sink.directory=/home/javadev/f1/F1_Service/f1-microservice/f1-totalLogs
a1.sinks.k1.sink.rollInterval=0

a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

启动flume:

nohup flume-ng agent -n a1 -c ./ -f logs-to-totallogs.conf &

至此flume实时采集全量或者增量文件或者文件夹数据到kafka的操作完毕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值