Flume原始碼分析—利用Eclipse對Flume原始碼進行遠端除錯分析環境搭建(一)
一、引言
最近在學習瞭解大資料分析相關的工作,對於其中用到的收集部分用到了flume,特意花了點時間瞭解了一下flume的工作原理及工作機制。個人瞭解一個新的系統首先從概略上了解一下其基本原理後,接著從原始碼入手瞭解其部分關鍵實現部分,最後會嘗試去修改部分內容,從而加深對其的理解。有關flume原理部分相關資料網上很多,這裡介紹一下我的原始碼分析環境的搭建過程。
二、環境介紹
1、apache-flume-1.6.0-src
2、CentOS 7.0
3、Eclipse Java EE Kepler
4、jdk-6u45-linux-x64.rpm
5、Source Insight
6、Oracle virtual Box
三、分析方法
在CentOS中安裝JDK,開啟Eclipse的遠端除錯功能,進行跟蹤排程分析。相比與直接用Source Insight直接閱讀原始碼效率更高點,但在分析過程中可以使用Source Insight輔助分析類之間的引用關係。
四、分析步驟
1、在CentOS中安裝JDK及Flume,安裝過程不再多述。該過程中CentOS及Flume均安裝在virtual Box中,IP地址為192.168.1.11。
2、設定Flume啟動引數,利用記事本開啟apache-flume-1.6.0-src\bin\flume-ng並進行編輯,主要將以下項
JAVA_OPTS="-Xmx20m"
修改為
JAVA_OPTS="-Xmx20m -Xdebug -Xrunjdwp:transport=dt_socket,address=8888,server=y,suspend=y"
這裡設定了遠端除錯的埠為8888.遠端除錯相關引數設定見這裡
3、設定Eclipse的遠端除錯功能,如下圖所示:
4、利用Eclipse Java EE Kepler匯入已有Maven工程,即flume原始碼,如下圖所示:
5、在Eclipse中JAVA檔案……\apache-flume-1.6.0-src\flume-ng-node\src\main\java\org\apache\flume\node\Application.java中設定斷點,在CentOS中啟動Flume即可對flume的啟動過程進行遠端除錯。由此作為入口點對整個flume原始碼進行跟蹤分析
注意:
五、常見問題
由eclipse引入maven工程,會出現很多的錯誤,常見的一些解決辦法如下:
1、最常見的是由於被牆的厲害,maven.twttr.com以及google中的部分庫不能下載,試了幾種,最好的解決辦法參見這裡,即在pom檔案中新增如下內容
<repository>
<id>maven.tempo-db.com</id>
<url>http://maven.oschina.net/service/local/repositories/sonatype-public-grid/content/</url>
</repository>
2、有關版本問題參見這裡.
3、tools.jar問題參見這裡.
4、Plugin execution not covered by lifecycle configuration問題參見這裡。
5、出現AvroFlumeOGEvent cannot be resolved類似的錯誤,如下圖所示,找不到相應的類的情況,
這是因為使用了avro,需要對pom檔案進行generate-source操作,利用avro-maven-plugin外掛的生成相應的JAVA檔案,然後新增相應的庫地址即可解決上述問題。
六、注意事項
1、由於JDK各個版本之間相容性做的並不好,為了更好的閱讀原始碼一定要了解各個軟體所使用的JDK版本,如Eclipse所需要的JDK、Flume所需要的JDK等等,否則會出現一些奇怪的問題,難以解決。
2、Flume在構建過程中使用到了很多開源的成熟的系統,如avro、netty、maven等等,與kafka等也存在交集,因此在分析過程中需要相應瞭解相關的開源系統內容。
相關推薦
Flume原始碼分析—利用Eclipse對Flume原始碼進行遠端除錯分析環境搭建(一)
一、引言 最近在學習瞭解大資料分析相關的工作,對於其中用到的收集部分用到了flume,特意花了點時間瞭解了一下flume的工作原理及工作機制。個人瞭解一個新的系統首先從概略上了解一下其基本原理後,接著從原始碼入手瞭解其部分關鍵實現部分,最後會嘗試去修改部分內容
Hadoop+Flume+Kafka+Zookeeper叢集環境搭建(一)
Hadoop+Flume+Kafka+Zookeeper叢集環境搭建 1.部署基礎條件 1.1 硬體條件 IP hostname 192.168.100.103 mater 192.168.100.104 flumekafka1 192.168.1
轉載:monkeyrunner之eclipse中運行monkeyrunner腳本之環境搭建(四)
導包 rep 是把 body tle cnblogs 9.png 解決方法 align 轉載自:lynnLi 的monkeyrunner之eclipse中運行monkeyrunner腳本之環境搭建(四) monkeyrunner腳本使用Python語法編寫,但它實際上是通
Ubuntu 14.04 Eclipse JNI環境搭建(一)之生成JNI標頭檔案
軟體環境 ubuntu 14.04eclipse for JavaCDT建立Java工程 建立一個空Java工程,並建立HelloJni.java類。編寫好HelloJni.java類後,需要通過javah命令生成標頭檔案(HelloJni.h)
使用Eclipse + OpenCV + C++ 環境搭建(一)
需要的軟體: Win7 64位 Eclipse CDT MinGW 64位 OpenCV2.4.13 使用其中的x64庫 1.安裝MinGW 64位 正常安裝軟體,我是安裝在c盤下 :C:\MinGW\mingw-w64 配置環境變數:C:\Mi
Hadoop原始碼閱讀環境搭建(IDEA) Hadoop原始碼編譯環境搭建 IDEA配置maven中央庫
拿到一份Hadoop原始碼之後,經常關注的兩件事情就是 1、怎麼閱讀?涉及IDEA和Eclipse工程搭建。IDEA搭建,選擇原始碼,逐步匯入即可;Eclipse可以選擇後臺生成工程,也可以選擇IDE匯入。二者工程也可以互相匯入\到處。 2、怎麼構建?利用maven,生成安裝包。 二者均需配置maven
利用adb對android手機進行遠端截圖/截圖
今晚在家搗騰手機, 玩adb的時候, 利用adb對手機進行了截圖, 玩玩, 如下: C:\Documents and Settings\Administrator>adb connect 192.168.1.100 connected to 192
Selenium終極自動化測試環境搭建(二):Selenium+Eclipse+Python
前面舉例了Selenium+Eclipse+Junit+TestNG自動化測試環境的搭建,在前一篇的基礎上,下面再舉例Selenium+Eclipse+Python測試環境搭建。 第一步:安裝Python 根據下面的地址,直接一鍵安裝,全部預設方式。 安裝到C:\Python27,設定Python
Spark專案之環境搭建(單機)五 配置eclipse的scala環境,並建立spark專案
先安裝scala 環境: eclipse版:spring-tool-suite-3.9.1.RELEASE-e4.7.1a-win32-x86_64 下載地址:https://www.scala-lang.org/download/ 然後配置環境變數,參考以下地址:
Eclipse進行遠端除錯linux 環境的tomcat配置 更新maven web專案
在網上找了找關於遠端除錯的配置,記錄在這裡以備後續查詢! 平常我們都是用windows開發,但是有時候需要將tomcat部署到linux下去執行,比如執行shell指令碼。這個時候我們就需要在linux環境下進行除錯。我們可以利用myeclipse的遠端除錯功能,來進行操
使用Eclipse + OpenCV + C++ 環境搭建(二)
在上一篇部落格搭建的環境中遇到的問題: 程式碼: 編譯上面的程式碼時就會出現問題: 意思就是無法呼叫c++結構的opencv庫。 解決方法: 參考: 這裡把解決的思路寫出來,當然具體的問題因為忘記截圖了,所以沒有晒出來 1.在上一篇部落
eclipse+maven+ssm初始環境搭建(1)
一,準備環境 jdk1.8, maven3.5 tomcat 8.5 eclipse Oxygen.3a Release (4.7.3a) 二, 配置環境 配置maven 阿里雲映象,conf資料夾下的setting.xml中的mirrors節點下加入: &
利用堆疊進行表示式求值的方法(一)
開發十年,就只剩下這套架構體系了! >>>
Flume NG原始碼分析(一)基於靜態properties檔案的配置模組
日誌收集是網際網路公司的一個重要服務,Flume NG是Apache的頂級專案,是分散式日誌收集服務的一個開源實現,具有良好的擴充套件性,與其他很多開源元件可以無縫整合。搜了一圈發現介紹Flume NG的文章有不少,但是深入分析Flume NG原始碼的卻沒有。準備寫一個系列分析一下Flume NG的
利用CNN對股票“圖片”進行漲跌分類——一次嘗試【附原始碼】
首先解釋一下標題: CNN:卷積神經網路(Convolutional Neural Network), 在影象處理方面有出色表現,不是被川普怒懟的那個新聞網站; 股票漲跌:大家都懂的,呵呵; 股票圖片:既然使用CNN,那麼如果輸入資料是股票某個週期的K線圖片就太
【Java】【Flume】Flume-NG啟動過程源代碼分析(一)
code extends fix tar top 依據 oid article gif 從bin/flume 這個shell腳本能夠看到Flume的起始於org.apache.flume.node.Application類,這是flume的main函數所在。 m
GCC原始碼分析(一)——介紹與安裝
原文連結:http://blog.csdn.net/sonicling/article/details/6702031 上半年一直在做有關GCC和LD的專案,到現在還沒做完。最近幾天程式設計的那臺電腦壞了,所以趁此間隙寫一點相關的分析和
計算機視覺之(一)利用Harris檢測子進行角點特徵檢測(含matlab原始碼)
本文為原創文章,轉載請註明本文來自http://blog.csdn.net/anymake_ren/article/details/21298807 計算機視覺中常用的影象特徵包括:點、
Glide原始碼分析(一)從用法來看之with方法
繼續啃原始碼,用過Glide的人,肯定都覺得它好好用,我們一般只需要幾行程式碼,就可以達到我們想要的效果,可以在這個背後是什麼呢?就需要我們來看了。 我一般看原始碼,我喜歡先從用法來看,然後一步一步的再細扣,所以就先從用法來看Glide的整體流程。 用過Glide的人,用下面這段
SNMP原始碼分析之(一)配置檔案部分
snmpd.conf想必不陌生。在程序啟動過程中會去讀取配置檔案中各個配置。其中幾個引數需要先知道是幹什麼的: token:配置檔案的每行的開頭,例如 group MyROGroup v1 readSec 這行token的引數是group。