一、从源码开始编译
1、github(https://github.com/apache/flume)上fork分支,下载到本地
2、编译 mvn clean package -DskipTests=true ,要求JDK7及以上版本,maven3及以上版本
编译过程中,可能有很多jar下载不了,建议用google搜索,相应的jar,下载到本地仓库(本人反复下载缺失jar,拷贝到maven配置的本地仓库,花费在2小时左右。)
3、导入eclipse ,会发现还有编译错误,原因是一些类找不到,这正是avro序列化框架自动生成的源码,如果正常编译,这些代码已经在target目录下生成了。将target下的avro生成的源代码拷贝到对应目录,解决编译问题。
二、运行Application
1、下载flume二进制包
http://flume.apache.org/download.html 解压到任意目录下,记为your_flume_root
按照用户指南,启动flume,telnet获取数据即可。
2、将${your_flume_root}/conf/log4j.properties文件拷贝到flume\flume-ng-node\src\main\java源码目录下,并将console加到第一行
flume.root.logger=INFO,LOGFILE,console
将${your_flume_root}/conf/example.conf 拷贝到 /flume-ng-node/example.conf
3、在eclipse设置Application入口类的debug参数
-n a1 -f example.conf
运行Application类(含main)方法:如下图:
打开cmd运行telnet localhost 44444 (window默认telnet服务时关闭的,需要手工启动telnet服务),输入hello flume
Over !现在可以开始研究flume代码如何启动及运转了。
参考资料
Flume-NG启动过程源码分析 http://blog.csdn.net/szwangdf/article/details/34097965
Flume 1.6.0 User Guide http://flume.apache.org/FlumeUserGuide.html