`

Flume源代码解读二

阅读更多

    [ xcly原创于iteye,见http://xcly.iteye.com ]

 

  接上次介绍tailDir的实现后,这次介绍节点的启动。节点的启动实现在高版本中会有所区别,这次针对flume0.9.3.

 

启动Flume Master或者Node一般都用FlumeWatchdog启动,生成pid文件,判断配置读取,利用Watchdog,  利用Runtime的exec来启动新的进程, 与新进程通信,如果子进程异常终止,就会不断尝试重新启动子进程。

 

我们看FlumeNode,由Watchdog调用FlumeNode的main方法, 在参数的传递上,使用Commons CLI.Commons CLI是一个不错的处理传递参数的工具类。 

 

  FlumeNode构造函数初始化nodesMan为LogicalNodeManager,WALManager实例为NaiveFileWALManager。初始化liveMan 为LivenessManager实例,将nodesMan,walMans作为参数传递給了liveMan。

 

FlumeNode start方法,启动LivenessManager,即启动HeartbeatThread线程,连接master获取最新配置。

 

HeartbeatThread循环执行heartbeatChecks,调用checkLogicalNodes从master获取逻辑节点名称,新建LogicalNode对象放入LogicalNodeManager,然后调用checkLogicalNodeConfigs对每一个逻辑节点从master取source,sink配置,LogicalNode对象根据是否更新调用openLoadNode,openSourceSink,最后调用 loadNode,实例化DirectDriver对象,传入source,sink,唯一线程名称,DirectDriver对象内含PumperThread线程,循环调用source里的next方法取得信息事件,然后调用sink的append的方法完成事件的传递。

 

 

Commons CLI----

分享到:
评论

相关推荐

    flume 1.8所有源代码 编译通过版 附 maven3.5.2 安装包

    在这个压缩包中,包含了Flume 1.8的源代码以及Maven 3.5.2的安装包,这对于开发者深入理解Flume的工作原理和进行定制化开发非常有帮助。 首先,要使用这些资源,你需要先安装Maven 3.5.2。解压`apache-maven-3.5.2....

    flume1.7.0源码

    Flume 1.7.0 是该软件的一个版本,包含了完整的源代码,便于开发者深入理解其工作原理并进行定制开发。 在Flume 1.7.0源码中,我们可以探索以下几个关键知识点: 1. **Flume架构**: Flume 的核心架构由三个主要...

    Flume读取数据库JDBC源程序

    在提供的压缩包文件`flume-ng-sql-source-develop`中,很可能包含了Flume JDBC源的源代码或者开发相关资源,供开发者自定义或扩展JDBC源的特性,例如添加新的查询策略、优化性能等。 使用Flume的JDBC源程序,企业...

    电商数仓项目(八) Flume(2) 拦截器开发源代码

    在 `flume-interceptor` 压缩包中,你可能找到了示例拦截器的源代码。研究这些代码可以帮助你更好地理解拦截器的工作原理,并为自己的项目提供参考。通过实践编写和调试拦截器,你可以更深入地了解 Flume 如何处理...

    flume自定义功能实现代码

    Flume 提供了一种可靠且灵活的方式,能够从各种数据源收集数据,并将其传输到集中式存储系统,如 HDFS(Hadoop 分布式文件系统)。本文将深入探讨如何在 Flume 中实现自定义功能,以满足特定的数据处理需求。 首先...

    基于flume+kafka+HBase+spark+ElasticSearch的用户轨迹查询大数据开发项目源代码+文档说明

    基于flume+kafka+HBase+spark+ElasticSearch的用户轨迹查询大数据开发项目源代码+文档说明,含有代码注释,满分大作业资源,新手也可看懂,期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。...

    es522_flume16_bak0827_succ_modify.zip

    2. **Elasticsearch Sink配置**:学习如何配置Flume的conf文件,包括指定Elasticsearch的URL、索引名称、类型等参数。 3. **数据格式化**:了解如何将Flume接收到的原始数据转换为Elasticsearch可以理解的格式。 4. ...

    Flume1.6.0入门:安装、部署、及flume的案例

    #### 二、Flume 的核心概念 Flume 的核心组件包括 Agent、Source、Sink、Channel 和 Event: - **Agent**:Agent 是 Flume 中的一个进程,每个 Agent 可以包含多个 Source、Sink 和 Channel。它是 Flume 的基本...

    Flume集群环境搭建,flume监控

    Flume从1.5.0版本开始,重构了其内部架构,核心组件、配置以及代码架构都进行了重大改动,这个新版本被称为Flume NG(Next Generation),即Flume的新一代版本,用以替代了原来的Flume OG(Original Generation)。...

    flume支持RabbitMQ插件

    flume支持RabbitMQ插件

    flume hbanse2.0 lib

    这通常涉及到修改源代码,重新编译并打包 Flume。 3. **添加第三方库**: 这里提到的 "lib" 文件可能包含这些自定义或更新的库,它们是 Flume 与 HBase 2.0 通信所必需的。将这些库添加到 Flume 的类路径中,可以让 ...

    apache-flume-1.8.0

    2. **数据源**: 数据源(如 syslog、kafka 或 JMS)负责从日志生成事件,将其推送到Flume代理。 3. **数据通道**: 通道作为临时存储,确保数据在传输到接收器之前不会丢失。常见的通道类型包括内存通道和文件通道。 ...

    apache-flume-1.9.0-bin.tar.gz

    5. **src** 目录(如果存在):可能包含源代码,尽管这里提到的是二进制版本,通常不会包含源代码。 6. **examples** 目录(如果存在):可能有示例配置和用例,方便用户学习如何设置 Flume。 在使用 Apache Flume ...

    flume-ng安装

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

    flume用户手册

    2. 内存:需要为源、通道或接收器所使用的配置提供足够的内存。 3. 磁盘空间:需要为通道或接收器所使用的配置提供足够的磁盘空间。 4. 目录权限:需要具有读/写权限的目录用于代理。 Flume的数据流模型如下: ...

    Apache flume1.6_src

    这个压缩包“Apache flume1.6_src”包含了 Flume 1.6.0 版本的源代码,对于理解其工作原理、学习底层技术以及进行定制化开发非常有帮助。 Flume 的核心组件主要包括 Channel、Sink 和 Source 三部分: 1. **Source...

    flume-ng文档.doc

    2. **内存** - 根据使用的源、通道或接收器配置需求提供足够的内存。 3. **磁盘空间** - 需要足够的磁盘空间以支持通道或接收器的配置。 4. **目录权限** - 对代理使用的目录具有读/写权限。 **架构** Flume 的数据...

    Flume学习文档(2){Flume安装部署、Flume配置文件}.docx

    2. **Sink**:`a1.sinks.k1.type = logger`指定了一个名为k1的Sink,其类型为logger,这会将接收到的数据输出到控制台。 3. **Channel**:`a1.channels.c1.type = memory`定义了一个名为c1的内存Channel,用于临时...

Global site tag (gtag.js) - Google Analytics