如何編譯及執行flume原始碼
一、從原始碼開始編譯
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