`

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集群环境搭建,flume监控

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

    使用Flume收集数据内含源码以及说明书可以自己运行复现.zip

    6. **源码解析**:如果压缩包包含源码,这部分会详细解读关键代码段,帮助理解Flume如何与外部数据源交互,以及如何自定义Flume插件。 7. **故障排查**:提供常见问题和解决方法,帮助用户在遇到问题时能快速定位和...

    Build Spark1.4.1/1.4.0 on Linux

    - **Git**:用于克隆Spark源代码库。 #### 三、构建步骤 1. **克隆Spark源码** ```bash git clone https://github.com/apache/spark.git cd spark git checkout v1.4.1 # 或者 v1.4.0 ``` 2. **设置环境变量...

    开源日志管理最全对比.docx

    采集方式分为侵入式和非侵入式,前者通过修改源代码实现,适用于简单服务系统,后者则更加通用,不依赖于特定应用,如Logstash、Filebeat、Flume-ng、Fluentd等开源工具都能实现非侵入式的日志采集。 数据可视化是...

    计算机课程毕设:基于Spark的行为日志分析系统设计与实现.zip

    通过DStream(Discretized Stream)抽象,处理连续的数据输入,如Kafka、Flume或Socket数据源。 2. 数据处理:使用DataFrame/Dataset API进行数据操作,提高代码可读性和性能。结合SQL查询,方便进行复杂的数据分析...

    大数据平台基础组件介绍.rar

    Flume是日志收集系统,用于从各种数据源收集、聚合和传输数据到Hadoop集群。这对于大数据的实时监控和分析至关重要。 最后,Kafka是一款分布式流处理平台,用于构建实时数据管道和流应用。它可以高效地处理和存储...

Global site tag (gtag.js) - Google Analytics