Flume 1.7 源码分析(一)源码编译
Flume 1.7 源碼分析(一)源碼編譯
Flume 1.7 源碼分析(二)整體架構
Flume 1.7 源碼分析(三)程序入口
1 說明
Flume是Cloudera提供的一個高可用的,高可靠的,分布式的海量日志采集、聚合和傳輸的系統,目前已經是Apache的一個子項目。Flume是一個專用工具被設計為旨在往HDFS、HBase發送數據。它對HDFS有特殊的優化,并且集成了Hadoop的安全特性。本文將詳細分析Flume核心模塊的源碼實現。
2 下載、編譯
2.1 源碼檢出
Flume源碼的git地址是:https://git-wip-us.apache.org/repos/asf/flume.git。本文采用的分支是flume-1.7。
2.2 源碼編譯
Flume采用Maven進行構建。本文采用IDEA作為編譯、調試工具。
2.2.1 Maven依賴下載
配置阿里云的Maven服務器,速度較快,并可完成絕大多數包的下載。
<mirror> <id>nexus-aliyun</id><mirrorOf>*</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>使用阿里云Maven服務器,仍然有一些包無法解決,例如FlumeAuth模塊的hadoop-minikdc和SolrSink的kite-morphlines-all等。由于這部分缺失的包,基本都是屬于flume的插件模塊之中,可直接關閉這些插件模塊,不會影響主程序的執行和源碼閱讀。同時,還可移除其他的你不需要使用的source和sink和channel插件模塊,可加快編譯速度。
導入好的項目如下圖所示:
其中比較重要的就是上圖圈起來的模塊了,其中flume-ng-core存放了最核心部分的代碼,包含基礎的Source、Channel、Sink等;flume-ng-node則是存放了程序啟動的代碼(入口函數)。
其他可能會用到的模塊就是flume-ng-sources、flume-ng-channels、flume-ng-sinks,這3個模塊存放了非必須的flume組件(flume-ng-core中未包含的),里面有些組件也是很常用的。
2.2.2 編譯打包
使用mvn clean install -Dmaven.test.skip=true進行打包,看到BUILD SUCCESS則代表編譯成功,可進行下一步。
本步驟一定要有,不然debug的時候會報某些類找不到,這些類大多數是由avro定義的文件編譯后才會生成的class文件。
2.2.3 簡單測試
在TestMemoryChannel類右鍵選擇Run ‘TestMemoryChannel’運行JUnit單元測試。檢查是否有報錯。
總結
以上是生活随笔為你收集整理的Flume 1.7 源码分析(一)源码编译的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leet Code OJ 3. Long
- 下一篇: Flume 1.7 源码分析(二)整体架