首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

Flume源代码解读2

2012-06-28 
Flume源代码解读二? ? [ xcly原创于iteye,见http://xcly.iteye.com?]?? 接上次介绍tailDir的实现后,这次介

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----

热点排行