Flume

Flume

是一个高可用,高可靠,分布式的海量日志采集、聚合和传输的系统,能够有效的收集、聚合、移动大量的日志数据。
人话:很靠谱,很方便、很强的日志采集工具。
在这里插入图片描述
第一个就是webServer表示一个web项目,他产生日志数据,到Agent把日志数据采集到HDFS中
Agent就是flume启动的代理,一个持续传输数据的服务,数据在Agent内部之间传输基本单位就是Event

flume三大核心组件:Source 、channel、sink

Source是数据源,负责读取数据
channel是临时存储数据的管道,source会把读取的数据临时存储到channel中
sink负责从channel里读取数据,最终把数据写出去,到指定目的地

详细介绍一下

Source:数据源:通过source组件可以指定让Flume读取哪里的数据,然后将数据传递给后面的channel
Flume内置支持读取很多种数据源,基于文件、基于目录、基于TCP\UDP端口、基于HTTP、Kafka的等等,他也是支持自定义的
几个常用的看一下:
Exec Source:实现文件监控,可以实时监控文件中的新增内容,类似于linux中的tail -f 效果。在这需要注意 tail -F 和 tail -f 的区别
tail -F

1.等同于–follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果
再次创建相同的文件名,会继续追踪

tail -f
等同于–follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止在实际工作中我们的日志数据一般都会通过log4j记录,log4j产生的日志文件名称是固定的,每天定时给文件重命名
假设默认log4j会向access.log文件中写日志,每当凌晨0点的时候,log4j都会对文件进行重命名,在access后面添加昨天的日期,然后再创建新的access.log记录当天的新增日志数据。这个时候如果想要一直监控access.log文件中的新增日志数据的话,就需要使用tail -F
2.NetCat TCP/UDP Source: 采集指定端口(tcp、udp)的数据,可以读取流经端口的每一行数据
3.Spooling Directory Source:采集文件夹里新增的文件
4.Kafka Source:从Kafka消息队列中采集数据

Channel

Channel:接受Source发出的数据,可以把channel理解为一个临时存储数据的管道
Channel的类型有很多:内存、文件,内存+文件、JDBC等
分析:
Memory Channel:使用内存作为数据的存储
优点是效率高,因为就不涉及磁盘IO
缺点有两个
1:可能会丢数据,如果Flume的agent挂了,那么channel中的数据就丢失了。
2:内存是有限的,会存在内存不够用的情况
File Channel:使用文件来作为数据的存储
优点是数据不会丢失
缺点是效率相对内存来说会有点慢,但是这个慢并没有我们想象中的那么慢,
所以这个也是比较常用的一种channel。
Spillable Memory Channel:使用内存和文件作为数据存储,即先把数据存到内存中,如果内存中
数据达到阈值再flush到文件中
优点:解决了内存不够用的问题。
缺点:还是存在数据丢失的风险

sink

Sink:从Channel中读取数据并存储到指定目的地
Sink的表现形式有很多:打印到控制台、HDFS、Kafka等

注意:Channel中的数据直到进入目的地才会被删除,当Sink写入目的地失败后,可以自动重写,不会造成数据丢失,这块是有一个事务保证的。

常用的sink组件有:

Logger Sink:将数据作为日志处理,可以选择打印到控制台或者写到文件中,这个主要在测试的时候使用
HDFS Sink:将数据传输到HDFS中,这个是比较常见的,主要针对离线计算的场景
Kafka Sink:将数据发送到kafka消息队列中,这个也是比较常见的,主要针对实时计算场景,数据不落盘,实时传输,最后使用实时计算框架直接处理。

Flume的特性

  1. 它有一个简单、灵活的基于流的数据流结构,这个其实就是刚才说的Agent内部有三大组件,数据通
    过这三大组件流动的
  2. 具有负载均衡机制和故障转移机制,这个后面我们会详细分析
  3. 一个简单可扩展的数据模型(Source、Channel、Sink),这几个组件是可灵活组合的

Flume中多个Agent之间是可以连通的,只需要让前面Agent的sink组件把数据写到下一个Agent的source组件中即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值