背景
在现实世界中,非关系型的数据远远多于关系型数据
Flume的基本思想和特点
- 采用插拔式软件架构,所有组件都是可插拔的
- 良好的可扩展性
- 高度定制化
- 声明式动态化配置
- 语意路由
- 良好的可靠性(支持事务)
以往版本
- flume og 0.9之前的的版本,已被弃用
- flume ng 现在广泛使用的
这两个版本是不兼容的
flume (ng版本)基本架构
agent
- 一系列的数据流称为agent
- 从接受到下一个接受中间的数据流
- 主要包括source channel sink
event
- flume中的数据流传递的数据称为event
- event由头部和字节数组组成
source
- agent的内部成员
- flume中接受event的组件
- source的种类
1、avro source (内置avro server)
2、thrift source (内置thrift server)
3、exec source (执行指定的shell)
4、spooling Directory source (检测某个文件内的文件的变化)
5、kafka source (从kafka中读取数据)
6、syslog source(接收tcp 和 udp 发过来的数据)
7、http source (接收http协议发来的数据)
8、taildir source(检测文件的变化 用的较多)
channel
- channel是一个暂存区,保存source写入的event,直到被sink 发射出去
- channel包含以下种类:
1、memory channel
2、file channel
3、jdbc channel
4、kafka channel
sink
- sink 负责从channel 中读取数据,并发送给下一个agent的source,
- sink的种类:
1、hdfs sink
2、hbase sink
3、avro/thrift sink
4、morphlineSorlSink
5、kafka sink
flume 的事务
- flume使用事务的方式是保证event传递的可靠性
- sink 必须在event被存入channl 后,或者已经传递给下一个agent后,才从上个channel中吧数据删除
flume的高级组件
interceptor
- 类似于spring mvc 的拦截,来实现在event传输过程中的拦截
- 拦截的数据可以保存在event的头部
- interceptor 分为:
1、timestamp interceptor
2、host interceptor
3、uuid interceptor
4、regex filtering interceptor (正则过滤)
5、regex extractor interceptor(正则取出)
channel selector
- channel selector 允许flume source选择一个或多个目标channel,并将当前的event写入这些channel,flume提供两种channel selector:
1、replicating channel selector
2、multiplexing channel selector
sink processor
- flume允许将多个sink 组装成一个逻辑实体(sink group)而sink processor则在sink group的基础上提供负载均衡和容错的功能