1、什么是flume
flume是一个分布式的数据采集器,Flume最主要的作用就是,实时读取服务器本地磁盘的数据,将数据写入到HDFS。
2 flume的架构
3、flume的组成
Agent 主要有3个部分组成,Source、Channel、Sink。
一个Source可以对应多个Channel,一个Sink只能对应一个Channel。
Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据
主要包括:
taildir:断点续传、多目录,保证数据不丢失,能够进行实时监控(常用)
avro:Flume串联的时候才使用的到,实现Agent的串联。
exec:监控文件,能实时,不能实现断点续传(一般不用)
· avro:Flume串联的时候才使用的到,实现Agent的串联。
kafka:就是kafka的消费者,可以从topic中消费数据(常用)
Sink是把数据存到存储或索引系统、或者被发送到另一个Flume Agent。
主要包括:
kafka:kafka的生产者,发布数据到topic中(常用)
hdfs:(常用)
Channel解耦的作用,具有缓冲的作用.,是位于source和sink的缓冲区
Flume 自带两重channel:
Memory Channel:内存中的队列,速度快,在不需要关心数据丢失的情景下适用。
File Channel:将所有事件写到磁盘,稳定性高。
kafka channel:(常用)
(1)只做单纯的channel提供高可靠性;但是会造成跨节点数据传输;
(2)做channel + sink 下游直接从kafka消费
(3)做source + channel直接从kafka消费数据
![](https://img-blog.csdnimg.cn/6801eee6286141169bd14a3a926c26a7.png)
Event
Flume数据传输的基本单元,以Event的形式将数据从源头送至目的地。
**Event由Header和Body两部分组成,**Header用来存放该event的一些属性,为K-V结构,Body用来存放该条数据,形式为字节数组。