flume基础

一、基本特点
flume是一个分布式、高可用的海量日志收集、聚合、传输系统。

二、可靠性:
当节点出现故障时,日志能够被传送到其他节点上而不会丢失。

三种级别的可靠性保障,从强到弱依次分别为:
end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。
Store on failure(当数据接收方crash时,将数据写到本地,待恢复后,继续发送)
Besteffort(数据发送到接收方后,不会进行确认)。

三、可恢复性:通过Channel比如FileChannel将事件持久化在本地文件系统里(性能较差)。

四、核心概念:

1、Client:Client生产数据,运行在一个独立的线程
2、Event: 一个数据单元,消息头和消息体组成。(Events可以是日志记录、 avro 对象等。)
3、Agent: 一个独立的Flume进程,包含组件Source、Channel、 Sink。(Agent使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。)
4、Source: 数据收集组件。(source从Client收集数据,传递给Channel)
5、Channel: 中转Event的一个临时存储,保存由Source组件传递过来的Event,像队列。
6、Sink: 从Channel中读取并移除Event,运行在一个独立线程。

五、Agent

flume的核心,Flume以agent为最小的独立运行单位;
包括source、 channel、 sink

六、source

Source是数据的收集端,负责将数据捕获后进行特殊的格式化,将数据封装到事件(event) 里,然后将事件推入Channel中。
在这里插入图片描述

七、Channel

Channel是连接Source和Sink的组件,大家可以将它看做一个数据的缓冲区(数据队列),它可以将事件暂存到内存中也可以持久化到本地磁盘上, 直到Sink处理完该事件。
 在这里插入图片描述

八、Sink

Sink从Channel中取出事件,然后将数据发到别处,可以向文件系统、数据库、 hadoop存数据, 也可以是其他agent的Source。在日志数据较少时,可以将数据存储在文件系统中,并且设定一定的时间间隔保存数据。

在这里插入图片描述

九、Flume拦截器

主要用于数据过滤

拦截器的位置在Source和Channel之间,当我们为Source指定拦截器后,我们在拦截器中会得到event,根据需求我们可以对event进行保留还是抛弃,抛弃的数据不会进入Channel中。
在这里插入图片描述

十、Flume可靠性

Flume 使用事务性的方式保证传送Event整个过程的可靠性。
Sink 必须在Event 被存入 Channel 后,已经被传达到下一站agent里,或者已经被存入外部数据目的地之后,才能把 Event 从 Channel 中 删除。
这样数据流里的 event 无论是在一个 agent 里还是多个 agent 之间流转,都能保证可靠,因为以上的事务保证了 event 会被成功存储起来。Flume支持在本地保存一份文件 channel 作为备份,而memory channel 将event存在内存 queue 里,速度快,但丢失的话无法恢复。

十一、Flume使用场景

1、多个agent顺序连接
在这里插入图片描述

2、多个Agent的数据汇聚到同一个Agent

在这里插入图片描述

这种情况应用的场景比较多,比如要收集Web网站的用户行为日志, Web网站为了可用性使用的负载集群模式,每个节点都产生用户行为日志,可以为每个节点都配置一个Agent来单独收集日志数据,然后多个Agent将数据最终汇聚到一个用来存储数据存储系统,如HDFS上。

3、多级流
在这里插入图片描述

4、更复杂的
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值