Flume源码涵盖的内容很多,但大家在读取Flume源码时可以去除枝叶,把握核心部分,可以有效的减轻源码分析的工作量。我使用的Flume-NG源码的版本为1.6.0,其他版本的源码可以参照分析。
根据Flume的基本原理,flume主要由source、sink以及channel三个组件组成,为了方便广大用户使用flume,flume项目组也是花了很多心思做了大量的组件来适配当前主流的源、目标以及channel。其源码中的包名如下所示,大家从包名中就很容易看出相应组件的作用。
source:
/flume-avro-source
/flume-jms-source
/flume-kafka-source
/flume-ng-legacy-sources
/flume-ng-sources
/flume-scribe-source
/flume-thri