flume学习

flume的工作原理

flume的核心是把数据从数据源(source)收集过来,在将收集到的数据送到指定的目的地(sink)。

为了保证输送的过程一定成功,在送到目的地(sink)之前,会先缓存数据(channel),待数据真正到达目的地(sink)后,flume在删除自己缓存的数据。

在整个数据的传输的过程中,流动的是event,即事务保证是在event级别进行的。

那么什么是event呢?

event将传输的数据进行封装,是flume传输数据的基本单位。如果是文本文件,通常是一行记录,event也是事务的基本单位。event从source,流向channel,再到sink,本身为一个字节数组,并可携带headers(头信息)信息。event代表着一个数据的最小完整单元,从外部数据源来,向外部的目的地去。

flume的框架

Flume使用agent来收集日志,agent包括三个组成部分:

Source(数据采集器):用于源数据的采集,然后将采集到的数据写人到Channel中并流向Sink;

Channel(缓冲通道): 底层是一个缓冲队列,对Source中的数据进行缓存,将数据高效、准确地写人Sink,待数据全部到达Sink后,Flume就会删除该缓存通道中的数据;

Sink(接收器):接收并汇集流向Sink的所有数据,根据需求,可以直接进行集中式存储(如上图,采用HDFS进行存储),也可以继续作为数据源传人其他远程服务器或者Source中。

在整个数据传输的过程中,Flume将流动的数据封装到一个event(事件)中,它是Flume内部数据传输的基本单元。一个完整的event包含headers和body,其中headers包含了一些标识信息,而body中就是Flume收集到的数据信息。


安装flume

1.拷贝压缩包至指定目录

2.解压缩至/opt/soft/目录下并改名方便操作

[root@hadoop3 install]# tar -zxf ./apache-flume-1.9.0-bin.tar.gz -C ../soft/

[root@hadoop3 install]# cd ../soft

[root@hadoop3 soft]# mv apache-flume-1.9.0-bin/ flume190

3.修改配置文件

[root@hadoop3 soft]# cd /opt/soft/flume190/conf

将临时配置文件拷贝为配置文件

[root@hadoop3 conf]# cp flume-env.sh.template flume-env.sh

[root@hadoop3 conf]# vim flume-env.sh
 

export JAVA_HOME=/opt/soft/jdk180

export JAVA_OPTS="-Xms500m -Xmx2000m -Dcom.sun.management.jmxremote"

4.安装nc和telnet

[root@hadoop3 conf]# yum install -y nc 

先查看telnet

[root@hadoop3  ~]# yum list telnet*

安装telnet

[root@hadoop3  ~]# yum install telnet-server

[root@hadoop3  ~]# yum install telnet.*

telnet是teletype network的缩写,现在已成为一个专有名词,表示远程登录协议和方式,有Telnet客户端和Telnet服务器程序. Telnet可以让用户在本地Telnet客户端上远端登录到远程Telnet服务器上。

通过nc和telnet实现互相通话

[root@hadoop3 ~]# nc -lk 8888                   

[root@hadoop3 conf]# telnet 192.168.122.17 8888

同虚拟机实现拨号互相通话

flume的应用

1.监控实时通讯并在控制台显示

新建netcat-logger.conf

[root@hadoop3 conf]# vim ./netcat-logger.conf


a1.sources=r1
a1.sinks=k1
a1.channels=c1
 
a1.sources.r1.type=netcat
a1.sources.r1.bind=192.168.122.17
a1.sources.r1.port=8888
 
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
 
a1.sinks.k1.type=logger
 
a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1

理解图解

启动flume监听命令

[root@hadoop3 flume190]# ./bin/flume-ng agent --name a1 --conf ./conf --conf-file ./conf/netcat-logger.conf -Dflume.root.logger=INFO,console

2.读取动态变化的日志类文件内容并输出到控制台显示

流程:使用echo命令不断向日志文件中添加内容,通过tail -f命令可以动态查看日志内容变化,配置新的conf文件,添加a2.sources.r1.command=tail -f /root/flumedemo.log命令

基础命令

[root@hadoop3 ~]# echo 'aabb' >> /root/flumedemo.log

[root@hadoop3 ~]# tail -f /root/flumedemo.log

新建conf文件

#将指定文件中的内容输出到控制台
a2.sources=r1
a2.sinks=k1
a2.channels=c1
 
a2.sources.r1.type=exec
a2.sources.r1.command=tail -f /root/flumedemo.log
 
a2.channels.c1.type=memory
a2.channels.c1.capacity=1000
a2.channels.c1.transactionCapacity=100
 
a2.sinks.k1.type=logger
 
a2.sources.r1.channels=c1
a2.sinks.k1.channel=c1

配置完成后启动flume

启动flume监听命令

[root@hadoop3 flume190]# ./bin/flume-ng agent --name a2 --conf ./conf/ --conf-file ./conf/file-flume-logger.conf -Dflume.root.logger=INFO,console

3.读取文件内容并在控制台显示


events.sources=eventsSource
events.channels=eventsChannel
events.sinks=eventsSink
 
events.sources.eventsSource.type=spooldir
events.sources.eventsSource.spoolDir=/opt/flumelogfile/events
events.sources.eventsSource.deserializer=LINE
#最大列数
events.sources.eventsSource.deserializer.maxLineLength=32000
#正则匹配
events.sources.eventsSource.includePattern=events_[0-9]{4}-[0-9]{2}-[0-9]{2}.csv
 
events.channels.eventsChannel.type=file
events.channels.eventsChannel.checkpointDir=/opt/flumelogfile/checkpoint/events
events.channels.eventsChannel.dataDir=/opt/flumelogfile/data/events
 
events.sinks.eventsSink.type=logger
 
events.sources.eventsSource.channels=eventsChannel

events.sinks.eventsSink.channel=eventsChannel

配置完成后启动flume

[root@hadoop3 flume190]# ./bin/flume-ng agent --name events --conf ./conf/ --conf-file ./conf/events-flume-logger.conf -Dflume.root.logger=INFO,console

启动监听后没有动静,因为文件名不对,匹配不上正则表达式,改个名字就好了

修改命名

[root@hadoop3 flume190]# ./bin/flume-ng agent --name events --conf ./conf/ --conf-file ./conf/events-flume-logger.conf -Dflume.root.logger=INFO,console

启动监听后没有动静,因为文件名不对,匹配不上正则表达式,改个名字就好了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要配置Flume与Kafka的集成,可以按照以下步骤进行操作: 1. 首先,需要在Flume的配置文件中定义source、sink和channel。其中,source指定为Kafka的source端,sink指定为Kafka的sink端,channel用于在source和sink之间传递数据。配置文件中的示例配置可以参考引用中的flume-kafka.conf。 2. 如果要将Kafka作为source端,需要在配置文件中设置source的类型为kafka,并指定Kafka的相关参数,如Kafka的地址、topic名称等。 3. 启动Flume之前,确保Zookeeper和Kafka已经成功启动。因为Flume在启动时会连接Kafka,如果Kafka未启动,会导致连接错误。参考引用中的说明。 4. 如果要将Kafka作为sink端,需要在配置文件中设置sink的类型为kafka,并指定Kafka的相关参数,如Kafka的地址、topic名称等。 5. 在启动Flume之前,需要确保Zookeeper集群和Kafka集群已经成功启动。 6. 可以使用命令行创建和查看Kafka的topic,以及创建Kafka的消费者。具体命令可以根据实际需求进行设置。 7. 启动Flume,并发送消息到Flume的端口。 8. 在Kafka的消费者中接收消息,验证数据是否成功传输。 需要注意的是,在配置Flume和Kafka的过程中,需要根据实际情况调整相关参数,确保Flume和Kafka能够正确地进行数据传输和接收。配置文件的具体内容可以参考引用中的示例配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Flume对接Kafka详细过程](https://blog.csdn.net/qq_47183158/article/details/112179052)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [玩转Flume+Kafka原来也就那点事儿](https://blog.csdn.net/weixin_34189116/article/details/89658220)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [快速学习-Flume 对接 Kafka](https://download.csdn.net/download/weixin_38592548/14885746)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地球在逃人员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值