Flume源代码解读二
来源:互联网 发布:淘宝联盟鹊桥 编辑:程序博客网 时间:2024/05/29 04:07
接上次介绍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的方法完成事件的传递。
- Flume源代码解读二
- Flume源代码解读一
- Flume源代码解读三
- Flume源代码解读四
- Flume源代码解读五
- minix3.1.8源代码解读(二)
- linux内核奇遇记之md源代码解读之二
- swift源代码解读(二) 服务的启动
- linux内核奇遇记之md源代码解读之二
- flume二:flume Channel介绍
- Flume NG flume-hdfs-sink 源代码分析
- flume 参考文档 (二)
- flume 参考文档 (二)
- Apache Flume(二)
- flume学习(二)
- Flume架构(二)
- 解读spring源代码心得
- prototype1.3.1源代码解读
- 嵌入式Linux kernel LOGO的更换方法
- 深入浅出java Io
- Docbook简介
- w.song.android.widget.jar使用时常见错误解答
- HDU 3986 Harry Potter and the Final Battle 删除一条边的最长最短路
- Flume源代码解读二
- SQL Server的数据恢复模式为完全模式!导致日志过文件超大!
- android-左右滑动页面设计-仿微信滑动引导页面
- Flume源代码解读三
- The Law of Leaky Abstractions 抽象漏洞定理
- HDU2491(Priest John's Busiest Day)贪心
- 查看Windows操作系统的内核版本
- Flume源代码解读四
- android-仿美丽说有滑动效果的导航栏