前段时间使用了flume 1.7,感觉flume写的挺好的,打算学习下源代码。
当前的版本为1.7.0。
简介
Flume是一个分布式的开源数据收集系统,使用起来简单方便,性能也不错。
逻辑结构
- Source负责数据的收集,flume有各种各样的source。总体来分为轮训拉取(PollableSource)和事件驱动(EventDrivenSource)两种类型。
- Channel是夹在source和sink中间的插件,负责缓冲,最常用的应该是memorychannel和filechannel。
- Sink负责将数据从channel转移到其他存储中。
代码整体结构
从Flume的源码结构来开,它分为下面几个模块:
FLUME MODEL | EXPLAIN |
---|---|
flume-ng-auth | Flume 的权限控制模块,为Rpc和Thrift提供访问权限控制。 |
flume-ng-channels | 各种通道的实现 |
flume-ng-clients | 实现了log4j相关的几个Appender |
flume-ng-configuration | Flume配置信息相关的类 |
flume-ng-core | flume整个核心框架,包括了各个模块的接口以及逻辑关系实现,和一些老的component |
flume-ng-embedded-agent | 提供一种方式将简单的agent嵌入到应用中 |
flume-ng-legacy-sources | 提供arvo和thrift 两个source |
flume-ng-node | 实现启动flume的一些基本类 |
flume-ng-sdk | flume的api接口,event 的定义就在里面 |
flume-ng-sinks | 各种sinks的实现 |
flume-ng-sources | 各种sources的实现 |