Flume各种采集日志方式与输出目录

版权声明:版权所有,转载请注明出处.谢谢 https://blog.csdn.net/weixin_35353187/article/details/83064924

1、从网络端口采集数据输出到控制台

下载与安装见:https://blog.csdn.net/weixin_35353187/article/details/83038297

一个简单的socket 到 console配置    

# 定义这个agent中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# 描述和配置source组件:r1
a1.sources.r1.type = netcat
a1.sources.r1.bind = bigdata01
a1.sources.r1.port = 44444

# 描述和配置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

启动flume:
bin/flume-ng agent -c conf -f myconf/socket-console.conf -n a1 -Dflume.root.logger=INFO,console

监听44444端口:

telnet anget-hostname  port   (telnet localhost 44444)

监听结果:

2、从网络端采集数据输出到文件

# 定义这个agent中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# 描述和配置source组件:r1
a1.sources.r1.type = netcat
a1.sources.r1.bind = hadoop01
a1.sources.r1.port = 44444

# 描述和配置sink组件:k1
a1.sinks.k1.type = file_roll
a1.sinks.k1.sink.directory = /usr/local/apache-flume-1.7.0-bin/flumelog

# 描述和配置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

注:a1.sinks.k1.sink.directory = /usr/local/apache-flume-1.7.0-bin/flumelog中文件目录必须是存在的,不存在会报错

启动Flume:

bin/flume-ng agent -c conf -f myconf/netcat-disk.conf -n a1 -Dflume.root.logger=INFO,console

给监听的端口发送数据:

telnet hadoop01 44444

会发现此时控制台并没有输出信息,而且存入了文件中

3、从本地目录写入到HDFS

# 定义这个agent中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# 描述和配置source组件:r1
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /usr/local/apache-flume-1.7.0-bin/flumedata

# 描述和配置sink组件:k1
#写hdfshdfs必须是配置好环境变量的
a1.sinks.k1.type = hdfs
#写入到hdfs的目录
a1.sinks.k1.hdfs.path = /flumedata/events
#写文件的前缀
a1.sinks.k1.hdfs.filePrefix = events-
#滚动时间
a1.sinks.k1.hdfs.rollInterval = 60
#滚动大小
a1.sinks.k1.hdfs.rollSize = 1048576
#滚动数量
a1.sinks.k1.hdfs.rollCount = 100

# 描述和配置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

注:a1.sinks.k1.hdfs.path = /flumedata/events写入到HDFS的目录不需要自己创建

启动Flume:

bin/flume-ng agent -c conf -f myconf/directory-hdfs.conf -n a1 -Dflume.root.logger=INFO,console

左边在传

上传成功

采集成功以后,文件名后缀变了.COMPLETED

注:如果再往目录里面放一个同名文件,会报错,不会上传到HDFS

4、Flume监控一个文件实时写到Kafka

# 定义这个agent中各组件的名字
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# 描述和配置source组件:r1
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /opt/datas/tmp.log

# 描述和配置sink组件:k1
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.topic = flumetopic
a1.sinks.k1.kafka.bootstrap.servers = hadoop01:9092,hadoop02:9092,hadoop03:9092,hadoop04:9092
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
a1.sinks.k1.kafka.producer.linger.ms = 1
a1.sinks.ki.kafka.producer.compression.type = snappy

# 描述和配置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
while true;
> do
> echo `date`>>/opt/datas/tmp.log
> sleep 0.5
> done

注:这里连接了四个机器,第一个用于启动Flume,第二台用于查看是否创建主题,第三台用于不断给tmp.log文件追加内容,用于Kafka消费,第四台用于查看文件大小,以证明文件在一直写入

启动Flume:

bin/flume-ng agent -c conf -f myconf/exec-kafka.conf -n a1 -Dflume.root.logger=INFO,console

启动成功,且已创建Topic为配置文件中flumeTopic。

接下来,给文件tmp.log一直追加内容。可以看到文件大小一直在变大,说明追加成功

消费Kafka中的数据:

kafka-console-consumer.sh --bootstrap-server hadoop01:9092 --from-beginning --topic flumeTopic

消费成功,且数据为实时时间,说明Flume成功的将文件写入到Kafka

猜你喜欢

转载自blog.csdn.net/weixin_35353187/article/details/83064924