`
zhao_rock
  • 浏览: 191803 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

Flume-ng 1.6启动过程源码分析(一)

 
阅读更多

 启动部分主要分为四块

 

  1. 命令行参数的载入,这部分用的common cli实现

  2. 对于可选的zk配置的加载

  3. 对于flume-ng配置的加载,这里利用EventBus实现配置文件动态加载

  4. 组件的启动

简单介绍下EventBus,它是Guava提供的消息发布-订阅类库,机制与观察者模式类似。

 

下面主要介绍上面提到的第34部分。

首先flume-ng的启动类是org.apache.flume.node.Application 位于flume-ng-node的项目里

首先介绍ConfigurationProvider这个接口,它仅提供一个方法

public MaterializedConfiguration getConfiguration();

 

 

下面就从加载flume-ng配置开始,介绍启动流程

总体来说三大部分:

  1. 初始化Source Channel Sink的工厂对象

  2. 创建具体的Source Channel Sink实例

  3. 组件启动

详细介绍:

  1. 创建Source Channel Sink的工厂对象

进入启动类org.apache.flume.node.Applicationmain方法

 

else流程为例,看一下PropertiesFileConfigurationProvider初始化时做了哪些

 

调用了父类的构造,从之前的继承关系图上可以看到,其父类AbstractConfigurationProvider

继续看一下父类的构造,初始化工厂类及channelCache

 

 

2. 创建具体的Source Channel Sink实例

在创建完PropertiesFileConfigurationProvider的实例configurationProvider后,代码中调用了configurationProvider.getConfiguration(),由于继承的关系,实际上调用的AbstractConfigurationProvidergetConfiguration,看一下它做了什么

 

读取了Flume的配置,加载组件,加载好的组件会分别放到channelComponentMapsourceRunnerMapsinkRunnerMap三个Map中。

loadSources为例,调查下如何加载Source

loadSources主要做了四件事情,

 

  1. 利用之前实例化的DefaultSourceFactory对象实例化source,其中create方法会先根据type判断type是内置还是自定制,然后通过反射的方式创建实例

  2. 创建ChannelProcessor对象,加载interceptor配置

  3. 返回SourceRunner对象,它分为两类PollableSourceRunnerEventDrivenSourceRunner,这里的判断依据是source实现了PollableSource接口还是EventDrivenSource接口,当然在代码中是通过 instanceof来判断

这里拓展一下,Source分为PollableSourceEventDrivenSourceEventDrivenSource可以理解时间驱动的,这样的sourceHttpSourceExecSource等,PollableSource是需要外部的驱动去轮询的Source,例如KafkaSource

 

 

 

  • 大小: 121.8 KB
  • 大小: 223 KB
  • 大小: 30.1 KB
  • 大小: 95.5 KB
  • 大小: 187.8 KB
  • 大小: 346.9 KB
  • 大小: 130.7 KB
0
0
分享到:
评论

相关推荐

    flume-ng安装

    Flume-NG 是一个分布式日志收集系统,能够从各种数据源中实时采集数据,并将其传输到集中式存储系统中。本文将指导您完成 Flume-NG 的安装和基本配置。 安装 Flume-NG 1. 先决条件:Java JDK 安装 在安装 Flume-...

    flume-ng-sql-source-1.5.2

    Flume-ng-sql-source-1.5.2是Apache Flume的一个扩展,它允许Flume从SQL数据库中收集数据。Apache Flume是一个分布式、可靠且可用于有效聚合、移动大量日志数据的系统。"ng"代表"next generation",表明这是Flume的...

    Flume-ng-1.6.0-cdh.zip

    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-release-1.5.2.zip

    Flume-ng-sql-source是Apache Flume的一个扩展插件,主要功能是允许用户从各种数据库中抽取数据并将其传输到其他目的地,如Apache Kafka。在本案例中,我们讨论的是版本1.5.2的发布包,即"flume-ng-sql-source-...

    flume-ng-sql-source-1.5.2.jar

    flume-ng-sql-source-1.5.2.jar从数据库中增量读取数据到hdfs中的jar包

    flume-ng-sql-source-1.5.3.jar

    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-sql-source-1.5.1

    flume-ng-sql-source-1.5.1 flume连接数据库 很好用的工具

    flume-ng-sql-source

    包含flume-ng-sql-source-1.5.1&flume;-ng-sql-source-1.4.1 此内容均为网上下载

    flume-ng-sql-source.jar

    flume是一个日志收集器,更多详细的介绍可以参照官网:http://flume.apache.org/ flume-ng-sql-source实现oracle增量数据读取 有了这个jar文件即可从关系型数据库拉去数据到flume

    flume-ng-1.6.0-cdh5.5.0.tar.gz

    "flume-ng-1.6.0-cdh5.5.0.tar.gz" 是 Apache Flume 的一个特定版本,具体来说是 "Next Generation" (ng) 版本的 1.6.0,与 Cloudera Data Hub (CDH) 5.5.0 发行版兼容。CDH 是一个包含多个开源大数据组件的商业发行...

    Flume-ng在windows环境搭建并测试+log4j日志通过Flume输出到HDFS.docx

    Flume-ng 是一个高可用、可靠、分布式的日志聚合系统,可以实时地从各种数据源(如日志文件、网络 socket、数据库等)中收集数据,并将其传输到目标系统中,如 HDFS、HBase 等。在本文中,我们将介绍如何在 Windows ...

    flume-ng-1.5.0-cdh5.3.6.rar

    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-1.6.0 cdh5.7.0安装包

    该压缩包“flume-ng-1.6.0-cdh5.7.0”是针对Cloudera Data Hub (CDH) 5.7.0 平台的Flume的特定版本,"ng"代表"Next Generation",意味着它是Flume的更新版本,提供了更先进的特性和性能优化。CDH是一个完整的、经过...

    flume-ng-sql-source-1.4.1

    flume-ng-sql-source-1.4.1 flume采集mysql数据到kudu

    flume-ng-sql-source-1.4.3.jar

    总的来说,Flume-ng-sql-source-1.4.3.jar是数据工程师和分析师的得力助手,它将数据库数据的采集与Flume的强大功能相结合,为企业的大数据战略提供了一条有效的数据输入途径。在当前大数据时代,掌握如何使用这一...

    flume-ng-1.6.0-cdh5.14.0源码

    在 CDH(Cloudera Distribution Including Hadoop)5.14.0 版本中,Flume-ng(下一代 Flume)1.6.0 版本是官方提供的组件,用于日志管理和大数据分析。这个源码包,`flume-ng-1.6.0-cdh5.14.0-src.tar.gz`,提供了...

    flume-ng-1.6.0-cdh5.10.1.tar.gz的下载

    `flume-ng-1.6.0-cdh5.10.1.tar.gz` 是一个针对Cloudera Distribution Including Apache Hadoop (CDH) 5.10.1 版本优化的Flume NG的打包文件,Flume NG是Flume的下一代版本,提供更先进的特性和性能。 Flume的核心...

Global site tag (gtag.js) - Google Analytics