启动部分主要分为四块
-
命令行参数的载入,这部分用的common cli实现
-
对于可选的zk配置的加载
-
对于flume-ng配置的加载,这里利用EventBus实现配置文件动态加载
-
组件的启动
简单介绍下EventBus,它是Guava提供的消息发布-订阅类库,机制与观察者模式类似。
下面主要介绍上面提到的第3和4部分。
首先flume-ng的启动类是org.apache.flume.node.Application 位于flume-ng-node的项目里
首先介绍ConfigurationProvider这个接口,它仅提供一个方法
public MaterializedConfiguration getConfiguration();
下面就从加载flume-ng配置开始,介绍启动流程
总体来说三大部分:
-
初始化Source Channel Sink的工厂对象
-
创建具体的Source Channel Sink实例
-
组件启动
详细介绍:
-
创建Source Channel Sink的工厂对象
进入启动类org.apache.flume.node.Application的main方法
已else流程为例,看一下PropertiesFileConfigurationProvider初始化时做了哪些
调用了父类的构造,从之前的继承关系图上可以看到,其父类AbstractConfigurationProvider,
继续看一下父类的构造,初始化工厂类及channelCache
2. 创建具体的Source Channel Sink实例
在创建完PropertiesFileConfigurationProvider的实例configurationProvider后,代码中调用了configurationProvider.getConfiguration(),由于继承的关系,实际上调用的AbstractConfigurationProvider的getConfiguration,看一下它做了什么
读取了Flume的配置,加载组件,加载好的组件会分别放到channelComponentMap,sourceRunnerMap,sinkRunnerMap三个Map中。
已loadSources为例,调查下如何加载Source
loadSources主要做了四件事情,
-
利用之前实例化的DefaultSourceFactory对象实例化source,其中create方法会先根据type判断type是内置还是自定制,然后通过反射的方式创建实例
-
创建ChannelProcessor对象,加载interceptor配置
-
返回SourceRunner对象,它分为两类PollableSourceRunner和EventDrivenSourceRunner,这里的判断依据是source实现了PollableSource接口还是EventDrivenSource接口,当然在代码中是通过 instanceof来判断
这里拓展一下,Source分为PollableSource和EventDrivenSource,EventDrivenSource可以理解时间驱动的,这样的source有HttpSource,ExecSource等,PollableSource是需要外部的驱动去轮询的Source,例如KafkaSource。
相关推荐
Flume-ng-1.6.0-cdh.zip 内压缩了 3 个项目,分别为:flume-ng-1.6.0-cdh5.5.0.tar.gz、flume-ng-1.6.0-cdh5.7.0.tar.gz 和 flume-ng-1.6.0-cdh5.10.1.tar.gz,选择你需要的版本。
flume-ng-sql-source-1.5.2源码
flume-ng安装
flume-ng-sql-source-1.5.2.jar从数据库中增量读取数据到hdfs中的jar包
flume-ng-sql-source-release-1.5.2.jar 用flume-ng-sql-source 从数据库抽取数据到kafka,支持sql
flume-ng-sql-source-1.5.3.jar,flume采集mysql数据jar包,将此文件拖入FLUME_HOME/lib目录下,如果是CM下CDH版本的flume,则放到/opt/cloudera/parcels/CDH-xxxx/lib/flume-ng/lib下,同样需要的包还有mysql-...
flume-ng-1.6.0-cdh5.5.0.tar.gz
flume-ng-1.5.0-cdh5.3.6.rarflume-ng-1.5.0-cdh5.3.6.rar flume-ng-1.5.0-cdh5.3.6.rar flume-ng-1.5.0-cdh5.3.6.rar flume-ng-1.5.0-cdh5.3.6.rar flume-ng-1.5.0-cdh5.3.6.rar flume-ng-1.5.0-cdh5.3.6.rar flume...
flume-ng-sql-source-1.5.1 flume连接数据库 很好用的工具
flume-ng-1.6.0 cdh5.7.0安装包,稳定版本。大家可以自由下载
flume-ng-1.6.0-cdh5.14.0-src.tar.gz 源码包,供参考
flume1.9采集数据入存入elasticsearch6.2.4,flume1.9本身只支持低版本的elasticsearch,基于apache-flume-1.9.0-src的flume-ng-sinks/flume-ng-elasticsearch-sink源码修改,支持es6.2.4,打的包,直接替换flume/...
包含flume-ng-sql-source-1.5.1&flume;-ng-sql-source-1.4.1 此内容均为网上下载
flume-ng-sql-source-1.4.3.jar
flume-ng-1.6.0 cdh5.5.2源码包
flume-ng-1.6.0-cdh5.10.1.tar.gz的下载。是生产中用得比较多的一个稳定版本
修改以后的flume-ng-core-1.7.0.jar,将原来的文件按行读取修改为按文件读取。使用时,直接替换到集群中flume安装目录下面lib文件夹中的flume-ng-core-1.7.0.jar即可使用。
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可...