简介
flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。Flume采用的流式的Event(事件)的形式,其核心的结构为Agent细分可分为Source,channel,Sink 三个部分,而数据流动的方向是 Source =》Channel=》Sink
核心结构可简化为如下图
flume的结构解析
Source
flume的数据来源多种多样,支持Kafka,netcat和avro,thrift,Exec等数据源,支持使用拦截器,拦截过滤数据。下面先详述flume的拦截器,拦截器处在source和channel之间
拦截器
拦截器处在flume的source和channel之间,flume内置了多种拦截器,如Timestamp,Host,regex,也支持自定义拦截器。拦截器会根据设定的规范,对数据进行过滤或者处理,具体可以看这篇文章
Source类型
source支持连接多个channel,而sink只能连接一个source,source可通过拦截器或者轮询方式连接source
下面是几个例子
flume的ExecSource例子和 flume的tailSource例子
channel
channel是连接sink和source的管道,一直有channel是保存数据的,因此channel的选型将极大的影响flume的性能和安全性,下面是几种常见的channel
channel selectors
配置channel选择器,具体参考,这篇文章
Replicating Channel Selector
每个channel都复制一份
Multiplexing Channel Selector
可配置转发规则,实现负载均衡和选择性接收
sink
sink只能连接一个source,支持多种sink方式,可参考这篇文章,hdfssink和kafkasink应该是用的比较多的